Guidelines:
Should include
- Why do we only allow a shard to donate/receive one chunk at a time? E.g. to avoid frequent StaleShardVersions
- What is the serialization mechanism to make a shard only donate/receive one chunk at a time?
- What are the phases of the live migration (e.g. bulk clone, transfer mods, commit)
- Why do we update the ShardingStateRecovery document during migration and what is it used for?
Code references
- ActiveMigrationsRegistry class
- MigrationSourceManager class
- MigrationDestinationManager class
- ShardingStateRecovery class