|
Currently, when a non-retriable error occurs during collection defragmentation, the defragmentation state for that collection is destroyed and removed from the map of defragmentation states.
However, if the error is not a drop collection or database, the defragmentation state will be recreated during the next balancer round so that defragmentation can be retried. We are not currently waiting for all outstanding requests for the collection to be finished before removing the state, which could result in requests from the previous instance of defragmentation to be acknowledged by the current defragmentation state.
We should modify the error handling so that the state is only removed after all outstanding actions have been acknowledged.
|