-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
DB Integration & Observability
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Overview
In AsyncResultsMerger::_handleBatchResponse(), _keepRecordOfAdditionalTxnParticipants() is called before the lifecycle/closed checks and before the try block that guards the rest of response handling. The helper runs TransactionRouter::Router::parseParticipantResponseMetadata(), which strictly parses TxnResponseMetadata and throws on fields that are present but badly typed.
Impact
If a shard returns a getMore reply with malformed transaction fields, the parse throws before the remote is woken (_signalCurrentEventIfReady()), before _cleanUpKilledBatch(), and before batch processing, stalling the router-side cursor (or letting the error escape the executor callback). Availability only; requires control of a server in the cluster. Pre-existing: the base tree had the same inline parse at the same position.
Scope
* Move the _keepRecordOfAdditionalTxnParticipants() call inside the existing try block (or otherwise handle a parse failure) so the wake-up/cleanup paths still run.
* Add a unit test covering a getMore reply with malformed transaction metadata.
Notes
Split out of SERVER-137535 (PR #64898); tracked as an 8th PR in the ARM refactor stack.
- related to
-
SERVER-137535 Extract _keepRecordOfAdditionalTxnParticipants helper in AsyncResultsMerger
-
- In Code Review
-