Skip to content

Min-quorum negotiation (again)#1908

Draft
mkeeter wants to merge 1 commit intomainfrom
mkeeter/min-quorum-negotiation-redux
Draft

Min-quorum negotiation (again)#1908
mkeeter wants to merge 1 commit intomainfrom
mkeeter/min-quorum-negotiation-redux

Conversation

@mkeeter
Copy link
Contributor

@mkeeter mkeeter commented Mar 17, 2026

(This is a revival of #1733, rebased onto main)


This implements RFD 542 and closes #1690.

Here's the quick version:

  • Once we have two downstairs in WaitQuorum, we schedule an event to fire after NEGOTIATION_DELAY (currently 500 ms)
  • If the third Downstairs arrives before this event fires, then we do full-quorum reconciliation (our usual path)
  • Otherwise, then we enter min-quorum reconciliation, marking the third Downstairs as faulted (so it must rejoin through live-repair)

I'm opening this as a draft because I want to see how the CI tests go. The PR includes integration tests for common and uncommon orderings of events, but it's hard to hit every possible path due to specific timing requirements; I'm very open to suggestions for other tests.

Before merging, we also need to figure out oxidecomputer/omicron#8528

@mkeeter mkeeter requested review from jmpesp and leftwo March 17, 2026 13:54
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.

Support activation with 2/3 read/write downstairs present.

1 participant