Skip to content

DAOS-19591 container: resend EC boundary to reintegrated targets - #19356

Open
liuxuezhao wants to merge 1 commit into
release/2.8from
lxz/eph_ult_fix_28
Open

liuxuezhao wants to merge 1 commit into
release/2.8from
lxz/eph_ult_fix_28

Conversation

@liuxuezhao

Copy link
Copy Markdown
Contributor

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 swallowed 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: remember that some rank waits for the boundary (cte_need_refresh) when a zero report is swallowed or when some rank has not reported yet, and periodically (every 30 seconds) re-push the boundary even if it is unchanged, once rebuild is done and reclaim is enabled.

Rank side: always report a zero minimum epoch so the leader learns that a target of this rank waits for the boundary.

Also back-port the false "Sluggish EC boundary reporting" warning fix from master (#19015): record when the leader starts tracking a container and only warn when it has been tracking it at least as long as the observed epoch gap, so a gap inherited from rdb at leader step-up is not reported as a stall.

Steps for the author:

  • Commit message follows the guidelines.
  • Appropriate Features or Test-tag pragmas were used.
  • Appropriate Functional Test Stages were run.
  • At least two positive code reviews including at least one code owner from each category referenced in the PR.
  • Testing is complete. If necessary, forced-landing label added and a reason added in a comment.

After all prior steps are complete:

  • Gatekeeper requested (daos-gatekeeper added as a reviewer).

@liuxuezhao
liuxuezhao requested review from a team as code owners October 23, 2026 07:37
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

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." '
Status is 'Awaiting backport'
Labels: 'ALCF,request_for_2.8.2'
https://daosio.atlassian.net/browse/DAOS-19591

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>
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium Verbs Provider MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-19356/2/execution/node/1684/log

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants