-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Sharding
-
Fully Compatible
-
Sharding 2021-01-25, Sharding 2021-02-22, Sharding 2021-03-08
-
133
-
2
This is a stop-gap solution and doesn't have to be pretty. Just for now, reject writes when:
- The collection has reshardingFields, and
- The collection is in the states:
- kMirroring, or
- kRenaming and the UUID is the original collection.
The above conditions are satisfied with the call to writesShouldRunInDistributedTransaction, which is the "blocking" state that's still named as the "distributed transaction" state.
Suggestion: for now, create a named error code "WriteRejectedForResharding" that's easy to verify in a test. In Milestone 3, a more robust solution will be designed to possibly queue writes.
- depends on
-
SERVER-53631 [Resharding] Verify UUIDs are correct in writesShouldRunInDistributedTransaction
- Closed
- is depended on by
-
SERVER-53923 Enforce reshardingCriticalSectionTimeout parameter
- Closed
-
SERVER-53653 [Resharding] Take the critical section when renaming on recipient shards
- Closed
-
SERVER-54672 Enable test of writes succeeding after reshardCollection command completes
- Closed
- is related to
-
SERVER-53911 Increment countWritesDuringCriticalSection
- Closed
- related to
-
SERVER-55852 Shards first acquire LockManager locks before reacting to abortReshardCollection
- Closed
-
SERVER-52742 Ensure both donorFields and recipientFields exists on the original collection entry after a resharding operation commits
- Closed
-
SERVER-57665 Remove the unused disallowWritesForResharding() method
- Closed