-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Cluster Scalability
-
ALL
-
None
-
None
-
None
-
None
-
None
-
None
-
None
When a resharding operation is aborted and the participant steps down (due to race) before transitioning to kDone, the participant persists kDone without an abort reason. _transitionToDone records the reason only when isAbortedOrSteppingDown() && !isSteppingDown(). On step-up, makeCancelState calls abort() only when the persisted kDone has an abort reason. With the reason missing, the recovered participant takes the success path instead of the abort path and misses the real abort reason.
SERVER-137983 cannot add two transition rules that treat "kDone without an abort reason" as a success path, because that identification is not reliable:
- kDone without an abort reason only from
{kBlockingWrites}
.
- kDone without an abort reason has the critical section promoted to block reads.
The first rule would fire spuriously when the abort arrives in an early state (kPreparingToBlockWrites, and it would silently pass and miss the bug when the abort happens in kBlockingWrites. The second rule would catch bugs like SERVER-56785.
- is related to
-
SERVER-73897 Resharding coordinator returns generic abort error after recovery from stepdown
-
- Closed
-