Repository navigation
DAOS-19591 container: avoid false sluggish EC boundary warning - #19015
Merged
Merged
Conversation
A new container service leader loads the EC aggregation boundary from rdb, which can be far behind the current time. The first comparison of the tracked epoch against the newly reported minimum then shows a large gap and triggers a bogus "Sluggish EC boundary reporting" warning. Record the time when the leader starts tracking a container and only warn when the leader has been tracking it at least as long as the observed epoch gap, so a gap that predates this leader is not reported as a stall. Signed-off-by: Xuezhao Liu <xuezhao.liu@hpe.com>
|
Ticket title is 'Aurora daos_user: engine printing continuously in log "cont_agg_eph_sync() 66e9ae82/2416cc43: Sluggish EC boundary report from rank 117, 165933 Seconds." ' |
wangshilong
reviewed
Sep 4, 2026
wangshilong
approved these changes
Sep 4, 2026
liw
approved these changes
Sep 8, 2026
6 tasks
mchaarawi
added a commit
that referenced
this pull request
Oct 16, 2026
…#19304) A reintegrated rank that gets the VOS container after the leader's last boundary refresh never starts EC aggregation: it waits for a refresh to set sc_ec_agg_eph_valid, while its eph 0 report pins the leader's min_eph to ea_rdb_eph == ea_current_eph, so cont_agg_eph_sync() skips the refresh as unchanged. The boundary is stuck for the whole pool and space is not reclaimed until all engines restart. Treat an eph 0 report as a request for the boundary and re-send it in the next cont_agg_eph_sync() round even if min_eph did not change. Also suppress the false "Sluggish EC boundary reporting" warning for boundary jumps that predate this leader (backport of #19015). Features: container rebuild Signed-off-by: Mohamad Chaarawi <mohamad.chaarawi@hpe.com>
mchaarawi
added a commit
that referenced
this pull request
Oct 16, 2026
…#19304) A reintegrated rank that gets the VOS container after the leader's last boundary refresh never starts EC aggregation: it waits for a refresh to set sc_ec_agg_eph_valid, while its eph 0 report pins the leader's min_eph to ea_rdb_eph == ea_current_eph, so cont_agg_eph_sync() skips the refresh as unchanged. The boundary is stuck for the whole pool and space is not reclaimed until all engines restart. Treat an eph 0 report as a request for the boundary and re-send it in the next cont_agg_eph_sync() round even if min_eph did not change. Also suppress the false "Sluggish EC boundary reporting" warning for boundary jumps that predate this leader (backport of #19015). Features: container rebuild Signed-off-by: Mohamad Chaarawi <mohamad.chaarawi@hpe.com>
liuxuezhao
pushed a commit
that referenced
this pull request
Oct 19, 2026
…#19304) A reintegrated rank that gets the VOS container after the leader's last boundary refresh never starts EC aggregation: it waits for a refresh to set sc_ec_agg_eph_valid, while its eph 0 report pins the leader's min_eph to ea_rdb_eph == ea_current_eph, so cont_agg_eph_sync() skips the refresh as unchanged. The boundary is stuck for the whole pool and space is not reclaimed until all engines restart. Treat an eph 0 report as a request for the boundary and re-send it in the next cont_agg_eph_sync() round even if min_eph did not change. Also suppress the false "Sluggish EC boundary reporting" warning for boundary jumps that predate this leader (backport of #19015). Features: container rebuild Signed-off-by: Mohamad Chaarawi <mohamad.chaarawi@hpe.com>
6 tasks
liuxuezhao
added a commit
that referenced
this pull request
Oct 23, 2026
After a target is reintegrated its EC aggregation boundary restarts from zero and the container shard stays paused until the leader pushes the boundary again. That push never comes in two cases: 1. The rank's report of a zero epoch is ignored by the leader because ds_cont_leader_update_track_eph() only ever raises the per-rank value, so the global minimum does not change and cont_agg_eph_sync() skips the unchanged boundary forever. 2. If a target (SSD) of a live engine was evicted and reintegrated, ds_cont_tgt_ec_eph_query_ult() sees min_ec_agg_eph == 0 with a non-zero last reported epoch and skips the report entirely, so the leader does not even see the zero. Leader side: take a zero report as the rank's current value, so that a zero minimum tells that some target waits for the boundary. While that is the case, re-push the boundary every 30 seconds even if it is unchanged, once rebuild is done and reclaim is enabled. The pushed boundary cannot regress since the minimum is still raised to the rdb epoch. Rank side: always report a zero minimum epoch so the leader learns that a target of this rank waits for the boundary. Also fix the false "Sluggish EC boundary reporting" warning (#19015 on master): only warn when the epoch gap is not larger than the period observed by this leader (since it started tracking the container, or since rebuild ended / reclaim was enabled), a gap inherited from rdb at leader step-up is not a real stall. Signed-off-by: Xuezhao Liu <xuezhao.liu@hpe.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A new container service leader loads the EC aggregation boundary from rdb, which can be far behind the current time. The first comparison of the tracked epoch against the newly reported minimum then shows a large gap and triggers a bogus "Sluggish EC boundary reporting" warning.
Record the time when the leader starts tracking a container and only warn when the leader has been tracking it at least as long as the observed epoch gap, so a gap that predates this leader is not reported as a stall.
Steps for the author:
After all prior steps are complete: