Details
-
Task
-
Resolution: Unresolved
-
Major - P3
-
None
-
None
-
None
-
None
-
Catalog and Routing
-
CAR Team 2023-12-25, CAR Team 2024-01-08, CAR Team 2024-01-22
Description
When a user wants to remove a shard, all the databases placed on that shard have to be moved manually to another shard by the user. The goal for v8.0 is to implicitly move the databases from the draining shard so that the user doesn't have to be aware of the concept of DBPrimary.
One step to get there is to build a new coordinator that moves all the databases placed on the current shard to another one.
This coordinator will run on the config server and will be scheduled under the _configsvrRemoveShard command.
These are the requirements the new coordinator must meet:
- Recoverability. The coordinator will be resilient to failovers.
- Joinability. Any request while a coordinator instance is ongoing will return the ongoing instance unless options differ, in the last case we should raise an error.
- Only one coordinator can run at a time for a draining shard.
- A coordinator can't be spawned for a shard if this shard is the destination shard of another coordinator.