-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Sharding
-
Fully Compatible
-
Sharding 2021-02-22, Sharding 2021-03-08
-
1
Recipient States should change from
(1) kUnused
(2) kCreatingCollection // where we currently create the RecipientDocument
to
(1) kUnused
(2) kAwaitingFetchTimestamp // new place where we create the recipient document, transitions into this state once the coordinator enters CoordinatorStateEnum::kPreparingToDonate
(3) kCreatingCollection // waits for the coordinator to be in CoordinatorStateEnum::kCloning, same as before, before changing into this state.
goal:
The coordinator must wait for for all donor and recipient state documents to be inserted before it transitions to kDecisionPersisted with an abortReason.
This means that the flush for CoordinatorStateEnum::kPreparingToDonate must wait for all the participants to majority commit the insertion of the the Donor/Recipient documents.
Motivation:
Currently, it is possible for resharding to fail before recipients have created their ReshardingRecipientService machines. This complicates the logic when the coordinator wants to make sure all participants have aborted the operation before completing.
- related to
-
SERVER-53611 Handle errors on donor before donor document is initially inserted
- Closed
-
SERVER-54704 Remove processAbortReasonNoDonorMachine() and processAbortReasonNoRecipientMachine() methods in resharding
- Closed