ExportXMLWordPrintableJSON

    • 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.

            Assignee:
            Charlie Swanson
            Reporter:
            Charlie Swanson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: