[SERVER-83838] Create a coordinator to change all DB primaries of a draining shard Created: 04/Dec/23  Updated: 02/Feb/24

Status: Backlog
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Silvia Surroca Assignee: Backlog - Catalog and Routing
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Assigned Teams:
Catalog and Routing
Sprint: CAR Team 2023-12-25, CAR Team 2024-01-08, CAR Team 2024-01-22
Participants:

 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.

Generated at Thu Feb 08 06:53:19 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.