Skip to content

Name the drains' KVDB keys per checkpoint - #541

Merged
xuyao00 merged 1 commit into
mpickpt:mainfrom
pera-noaa:clock-kvdb
Oct 21, 2026
Merged

xuyao00 merged 1 commit into
mpickpt:mainfrom
pera-noaa:clock-kvdb

Conversation

@pera-noaa

Copy link
Copy Markdown
Contributor

Fixes #540. ckpt_kvdb_name() names the collective and P2P drains' KVDB keys by the computation's start and the checkpoint's generation, and replaces the P2P drain's own counter. It also stops if a name exceeds 63 characters, which DMTCP's KVDB truncates silently.

Hercules (Intel MPI 2021.7.1, 2 nodes), nonblocking_collectives with 3 checkpoints in a row: 8 of 32 runs fail on main, 32 of 32 pass with this. Suite 22/23 in both modes (attributes is #524).

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 51 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 482d079d-1a0e-45d1-82dd-43952c7e44a2
📥 Commits

Reviewing files that changed from the base of the PR and between 035d14e and 0d4aa84.

📒 Files selected for processing: 3
  • mpi-proxy-split/p2p_drain_send_recv.cpp
  • mpi-proxy-split/seq_num.cpp
  • mpi-proxy-split/seq_num.h
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@xuyao00 xuyao00 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good. Can you improve the comment for function ckpt_kvdb_name()? It explains why we need this function, but didn't explain what this function does.

The collective drain used the same KVDB names at every checkpoint, and
the coordinator keeps its KVDB until a restart.  With checkpoints back
to back, each round's convergence count then included the previous
checkpoint's, so the drain could stop with ranks still behind; the P2P
drain then spun until Intel MPI aborted it ("too many outstanding
nonblocking collectives detected").

ckpt_kvdb_name() names both drains' keys by the start of the
computation and the checkpoint's generation, which every rank has from
the coordinator before DMTCP_EVENT_PRESUSPEND.  It replaces the P2P
drain's own counter, and stops if a name exceeds the 63 characters that
DMTCP's KVDB keeps.
@pera-noaa

Copy link
Copy Markdown
Contributor Author

Done in 0d4aa84: the comment now starts with what the function does (the name it writes, and when it fails), then why.

@xuyao00 xuyao00 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM

@xuyao00
xuyao00 merged commit ca672d0 into mpickpt:main Oct 21, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Collective drain reads the previous checkpoint's counts when checkpoints come back to back

2 participants