|
The RenameCollectionCoordinator does the following:
- Disallow all other DDL operations (excluding create) for the same db
- Check that the options are valid (e.g. make sure that the target collection does not exist if dropTarget = true).
- If checks are passing, the coordinator is not flagged as "complete on error".
- Rename participant commandss are invoked on each shard, the critical section is acquired for both collections.
This flow is faulty because if an explicit/implicit create sneaks in between bullets 2 and 3, this causes the rename participant that is executing on the shard primary to hang indefinitely.
|