|
Right now we assume that the split chunk operation on the config server is idempotent , but in fact it is not: depending on where we fail, we may be able to recover from it or not.
The commitChunkSplit method triggered by a _configsvrCommitChunkSplit command is executing the following steps:
1) Apply the batch of chunk updates
2) Execute getShardAndCollectionVersion - resulting in an exhaustive on the config primary.
If a stepdown happens right after 1 and before 2, the operation will be retried (at most 3 times) and will fail, even though the splitChunk technically happened upon the first applyChunkOpsDeprecated successful execution.
|