-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Test Model
-
None
-
Storage Engines - Persistence
-
359.712
-
SE Foundations - 2026-07-21
-
8
Larger Context
This ticket defines how timestamped asynchronous role transition can use prepare_switch_role and switch_role in test/model. It is design and proof-of-concept work for a later implementation.
Motivation
Asynchronous role transition spans multiple transaction operations and requires explicit generator, timestamp-assignment, and counterexample-reduction behaviour.
Scope
Define the asynchronous role-transition state machine. prepare_switch_role should set the step-down timestamp on a leader and return success without changing state on a follower. Modifying transactions active before preparation must return WT_ROLLBACK on a later write or commit. Transactions started after preparation must commit and become durable above the boundary timestamp. All active write transactions must complete before stable advancement, the boundary checkpoint, and demotion.
The design and proof of concept must cover:
- Whether stable and checkpoint completion are internal to switch_role or explicit workload operations.
- How sequence dependencies and timestamp blocks place work around preparation and completion.
- How counterexample reduction preserves required protocol operations while reducing transactions inside the prepared interval.
- How the state can become node-scoped in future work without implementing multi-mode now.
Build a proof of concept with one straddler transaction and one post-boundary transaction.
Acceptance Criteria
- A written design defines operation semantics, state transitions, timestamp rules, checkpoint rules, and failure behaviour.
- The proof of concept produces matching model and WiredTiger results for straddler and post-boundary transactions.
- The design defines workload generation, timestamp assignment, and an initial counterexample-reduction strategy.
- Follow-up implementation work can be estimated without unresolved operation semantics.
Outcome
The project has a testable design and proof of concept for asynchronous switch_role before full implementation.
- depends on
-
WT-18870 Test Model Switch Mode (4/5): Randomised switch_role generation
-
- Open
-
- is related to
-
WT-18867 Test Model Switch Mode (1/5): Follower-mode foundation
-
- Open
-
-
WT-18869 Test Model Switch Mode (3/5): Relax switch_role requirements
-
- Open
-
- related to
-
WT-18867 Test Model Switch Mode (1/5): Follower-mode foundation
-
- Open
-
-
WT-18868 Test Model Switch Mode (2/5): Synchronous switch_role
-
- Open
-
-
WT-18869 Test Model Switch Mode (3/5): Relax switch_role requirements
-
- Open
-
-
WT-17897 Async Stepdown Test Coverage: test/python
-
- Closed
-