Consider the following interleaving:
- MovePrimary starts
- MovePrimary completes the cloning phase and is about to execute the commit phase.
- Concurrently, the user runs removeShard on the destination shard
- MovePrimary now commits the metadata change on the configsvr which writes the no-longer-existent destination shardId as the db primary for the moved database
As a result, the moved database becomes inaccessible and data may be lost if the removed shard is destroyed.
- related to
SERVER-68541 Concurrent removeShard and movePrimary may delete unsharded collections