Skip to content

Time the replicant-ack budget from the fastest node (low priority) - #6272

Draft
emelialei88 wants to merge 2 commits into
bloomberg:mainfrom
emelialei88:fix/first-ack-fastest
Draft

emelialei88 wants to merge 2 commits into
bloomberg:mainfrom
emelialei88:fix/first-ack-fastest

Conversation

@emelialei88

@emelialei88 emelialei88 commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

🎯 The "Why" (Intent)

The replicant-ack wait was meant to time the other nodes from the fastest ack (the log even says "fastest node"). But it watched nodes one at a time, in list order, so a lagging node listed first got up to 1s of extra slack per pass. Which node got marked incoherent depended on list order.

🛠️ The "What" (Critical Changes)

  • The inline first-ack wait looks at every node at once and sleeps until any of them acks. It checks and sleeps under the lock acks are signalled under, so no ack is missed.
  • The per-node check is split out of the node wait first, so it can be run without blocking. This is a pure move.
  • New test: two replicants lag 1.5s with a 1s timeout. Exactly one must be marked incoherent, whichever node is fast.

Signed-off-by: Emelia Lei <wlei29@bloomberg.net>
Signed-off-by: Emelia Lei <wlei29@bloomberg.net>
@emelialei88 emelialei88 changed the title Time the replicant-ack budget from the fastest node Time the replicant-ack budget from the fastest node (low priority) Sep 30, 2026

@roborivers roborivers left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cbuild submission: Success ✓.
Regression testing: Success ✓.

The first 10 failing tests are:
consumer_non_atomic_default_consumer_generated **quarantined**
sc_downgrade [timeout] **quarantined**

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants