-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Execution
-
None
-
None
-
None
-
None
-
None
-
None
-
None
During implementation and code review of SERVER-133148, we identified an opportunity to clean up this area of the code which has proven bug-prone in the past.
The core idea is to refactor AsyncResultsMerger's per-remote retry bookkeeping from ad-hoc flags (outstandingRequest + callback handle + retry-strategy internals) into an explicit per-remote lifecycle state machine (e.g. Undispatched -> Dispatched -> ResultsBuffered -> Exhausted), with a HitRetryableError state carrying an explicit retryNotBefore backoff deadline.
This should improve the code legibility here, and reduce the risk of future latent bugs by doing so.
Full details
- is related to
-
SERVER-137535 Extract _keepRecordOfAdditionalTxnParticipants helper in AsyncResultsMerger
-
- In Code Review
-
-
SERVER-137536 Model ARM per-remote async work as an explicit state machine
-
- In Code Review
-
-
SERVER-137537 Run ARM retry backoff on the TaskExecutor
-
- In Code Review
-
-
SERVER-137538 Schedule ARM retry backoff with scheduleWorkAt
-
- In Code Review
-
-
SERVER-137539 Shut down the ARM sub-baton at the start of kill()
-
- In Code Review
-
-
SERVER-137541 Move ARM killCursors scheduling onto RemoteCursorData
-
- In Code Review
-
-
SERVER-137542 Target each remote cursor's own namespace in ARM killCursors
-
- In Code Review
-
-
SERVER-137540 Add RemoteCursorData::releaseAllMemory()
-
- Closed
-
-
SERVER-134806 Track explicit opCtx-restoration readiness for AsyncResultsMerger dispatch gate
-
- Investigating
-
- related to
-
SERVER-133148 Avoid using semi-initialized opCtx when retrying getMores
-
- Closed
-
-
SERVER-134806 Track explicit opCtx-restoration readiness for AsyncResultsMerger dispatch gate
-
- Investigating
-