-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Cluster Scalability
-
Fully Compatible
-
ClusterScalability 28Sep-12Oct, ClusterScalability 12Oct-26Oct, ClusterScalability 26Oct-9Nov
-
200
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Background / Problem
Resharding has its own limit on the config server. ReshardingCoordinatorService::checkIfConflictsWithOtherInstances (src/mongo/db/s/resharding/resharding_coordinator_service.cpp) throws "Only one resharding operation is allowed to be active at a time". It only lets you join an existing operation with the same namespace, key, provenance, and user UUID.
So two reshards on different collections would both get past the DDL locks on the shard, but the second one fails with ConflictingOperationInProgress when the config server tries to create its ReshardingCoordinator.
- _configsvrReshardCollection at configsvr_reshard_collection_cmd.cpp:287
- calls ReshardingCoordinator::getOrCreate at resharding_coordinator_service.cpp:139
- which goes through PrimaryOnlyService::getOrCreateInstance
- which calls ReshardingCoordinatorService::checkIfConflictsWithOtherInstances at resharding_coordinator_service.cpp:33.
Goal
Remove or modify this check so that concurrent reshardings and moveCollections on distinct collections within the same database are allowed.
- is related to
-
SERVER-138049 Allocate individual thread pools per resharding operation
-
- In Code Review
-
- related to
-
SERVER-138726 Duplicate reshardCollection change events emitted when a reshard commit is retried
-
- Closed
-
-
SERVER-138508 Change error code for multiple reshardings to reflect maximum reshardings reached
-
- In Progress
-
-
SERVER-136814 make coordinator pool usage in resharding non-blocking
-
- Closed
-
-
SERVER-138009 change stream monitors on donors and recipients are blocking on PoS thread pool
-
- Backlog
-