Guidelines:
Should include
- What state does a router track? E.g. the participant list, whether each participant is read-only
- What are the different commit paths? E.g. read-only, single-write-shard, multi-write-shard
- What is the procedure for a two-phase commit? E.g. router forwards participant list to coordinator, coordinator makes participant list durable, etc
Code references
- TransactionRouter class
- TransactionCoordinatorService class
- TransactionCoordinator class