-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
ALL
-
None
-
None
-
None
-
None
-
None
-
None
-
None
When a worker abandons a batch at shutdown while the dispatcher is blocked in PipelinedApplierBatchTracker::addBatch() waiting on backpressure, the dispatcher deadlocks: the abandoned batch never completes, so in-flight batches and bytes never come back under threshold, and the only other release for the capacity wait (the tracker shutdown flag) is set by the dispatcher's own teardown, which the parked thread can never reach.
The fix should include the abandoned flag in the capacity wait predicate and have addBatch() refuse new work (nullptr) once abandonment is observed, since in-flight can only grow from that point. The refusal then propagates up through the dispatch path and stops the _run() loop (see SERVER-136053).
Also add test coverage for a dispatcher parked at the backpressure gate when a worker abandons its batch.
- related to
-
SERVER-136053 Stop POA dispatch after shutdown-related abandonment
-
- In Code Review
-
-
SERVER-134780 Implement POA backpressure on total in-flight batches and bytes
-
- Closed
-