Skip to content

DAOS-19591 container: two fixes for EC aggregation boundary reporting - #19014

Open
liuxuezhao wants to merge 3 commits into
release/2.6from
lxz/cont_agg_eph_sync_26
Open

liuxuezhao wants to merge 3 commits into
release/2.6from
lxz/cont_agg_eph_sync_26

Conversation

@liuxuezhao

Copy link
Copy Markdown
Contributor

1.cont_refresh_vos_agg_eph_one() now creates the VOS container when it
does not exist locally (-DER_NONEXIST). That can happen when the
container was created while the target was excluded and the following
reintegration/extend migrated no record for it. Without the VOS
container the target never reports its EC aggregation epoch, so the
container service leader keeps the boundary of the whole container
pinned. As the leader only refreshes containers still present in RDB,
creating the VOS container here is safe.
Since container creation can yield and needs a deep stack, switch
ds_cont_tgt_refresh_agg_eph() from ds_pool_task_collective() to
ds_pool_thread_collective() with DSS_ULT_DEEP_STACK.

2.Track ea_start_ts, the time this leader started tracking a container,
and suppress the "Sluggish EC boundary reporting" warning when the
boundary jump is larger than the tracking age. Such a jump cannot have
been observed by this leader; it comes from the stale epoch loaded from
RDB at leader step-up and is not a real 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 September 4, 2026 08:59
@github-actions

github-actions Bot commented Sep 4, 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 'In Review'
Labels: 'ALCF'
https://daosio.atlassian.net/browse/DAOS-19591

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@liuxuezhao
liuxuezhao requested review from a team as code owners September 4, 2026 09:28
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Test RPMs on EL 8.6 completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/2/display/redirect

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional on EL 8.8 completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/2/display/redirect

1 similar comment
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional on EL 8.8 completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/2/display/redirect

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@liuxuezhao
liuxuezhao force-pushed the lxz/cont_agg_eph_sync_26 branch from 1a6341f to 9ae4adc Compare September 7, 2026 08:12
liw
liw previously approved these changes Sep 7, 2026
@liuxuezhao
liuxuezhao removed request for a team September 7, 2026 08:15
@daosbuild3

Copy link
Copy Markdown
Collaborator

wangshilong
wangshilong previously approved these changes Sep 8, 2026
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/7/display/redirect

1 similar comment
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/7/display/redirect

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium Verbs Provider completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/7/display/redirect

1 similar comment
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium Verbs Provider completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/7/display/redirect

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium Verbs Provider completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/8/display/redirect

1 similar comment
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium Verbs Provider completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/8/display/redirect

@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/8/display/redirect

1 similar comment
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-19014/8/display/redirect

@mchaarawi
mchaarawi dismissed stale reviews from wangshilong and liw via d37975a October 16, 2026 21:00
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

liuxuezhao and others added 2 commits October 19, 2026 08:25
1.cont_refresh_vos_agg_eph_one() now creates the VOS container when it
  does not exist locally (-DER_NONEXIST). That can happen when the
  container was created while the target was excluded and the following
  reintegration/extend migrated no record for it. Without the VOS
  container the target never reports its EC aggregation epoch, so the
  container service leader keeps the boundary of the whole container
  pinned. As the leader only refreshes containers still present in RDB,
  creating the VOS container here is safe.
  Since container creation can yield and needs a deep stack, switch
  ds_cont_tgt_refresh_agg_eph() from ds_pool_task_collective() to
  ds_pool_thread_collective() with DSS_ULT_DEEP_STACK.

2.Track ea_start_ts, the time this leader started tracking a container,
  and suppress the "Sluggish EC boundary reporting" warning when the
  boundary jump is larger than the tracking age. Such a jump cannot have
  been observed by this leader; it comes from the stale epoch loaded from
  RDB at leader step-up and is not a real stall.

Signed-off-by: Xuezhao Liu <xuezhao.liu@hpe.com>
…#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
liuxuezhao force-pushed the lxz/cont_agg_eph_sync_26 branch from d37975a to 859ebd8 Compare October 19, 2026 09:08
@daosbuild3

Copy link
Copy Markdown
Collaborator

return rc;
}

#define EC_AGG_EPH_INTV (10ULL * 1000) /* seconds interval to check*/

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

small nit: this looks to be defined twice now. here and L2266

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry, i just force push it again, only change is remove one duplicated line.

@daosbuild3

Copy link
Copy Markdown
Collaborator

… refresh

Commit 151586e ("re-send EC agg boundary to ranks waiting for it")
reverted the part of 679997b that creates the missing VOS container
when refreshing the EC aggregation boundary. In 2.6 there is no pool
container recovery (DAOS-17857/DAOS-19087 in master), so when a
container is created while a rank is excluded and the following
reintegration/extend migrates no record for it, the VOS container is
never created on that rank. The rank then never reports its EC
aggregation epoch (or reports 0 forever if only some of its targets
have the VOS container), the leader keeps the boundary pinned to the
RDB epoch, and with 151586e it also re-sends the refresh every 10s.

Restore the creation in cont_refresh_vos_agg_eph_one() (and the thread
collective with deep stack needed for it), and additionally:
- cont_agg_eph_sync(): request a refresh for a rank that never reported
  anything (eph 0) while the boundary is already valid, so the missing
  VOS container gets created even when the minimum epoch did not change
  (679997b alone would not trigger the refresh in steady state).
- cont_destroy(): stop tracking the EC aggregation boundary before the
  destroy broadcast, and wait for the in-flight refresh to complete
  (new ea_refreshing flag), so the refresh cannot re-create the VOS
  container after it has been destroyed and leave an orphan behind.
- cont_child_create_start(): tolerate -DER_EXIST from vos_cont_create()
  as it may yield and another sponsor (migration, IV open, boundary
  refresh) may create the VOS container concurrently.

Signed-off-by: Xuezhao Liu <xuezhao.liu@hpe.com>
@liuxuezhao
liuxuezhao force-pushed the lxz/cont_agg_eph_sync_26 branch from 859ebd8 to 8aa5438 Compare October 19, 2026 14:12
@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

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.

5 participants