-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Sharding
-
Fully Compatible
-
Sharding 2018-10-22, Sharding 2018-11-05, Sharding 2018-11-19, Sharding 2018-12-17
-
0
Server changes:
- On step-up,
- Wait for the coordinator catalog to drain.
- Scan the coordinators table and for each document, if a corresponding TransactionCoordinator does not exist in the TransactionCoordinatorCatalog, create a TransactionCoordinator from the document, insert it into the catalog, and schedule a task to continue driving it to completion.
- Prevent external requests from reading the TransactionCoordinatorCatalog after stepup until the catalog has been populated from the durable state
If this ticket is completed before "prepare" is ready for failover testing, additional server changes:
- Add an override to mongos to send coordinateCommit to the config server
- Add an override to the config server to not remove TransactionCoordinators from the catalog on finishing coordinating a commit (because a coordinateCommit retry from mongos will not be able to recover the decision from a local participant)
These overrides should be removed under SERVER-37886.
Testing
- Same node steps up after stepping down
- Different node steps up after stepping down
- is duplicated by
-
SERVER-36585 Make TransactionCoordinator write decideCommit oplog entry
- Closed
-
SERVER-37883 Handle failures to make participant list and commit/abort decisions durable
- Closed