Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-41125

Attach UnknownTransactionCommitResult errorLabel when commitTransaction fails and the result is unknown

    • Type: Icon: Task Task
    • Resolution: Won't Fix
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Replication

      Similar to SERVER-34256 (where the server started adding to TransientTransactionError error label to transient errors within a transaction) the server should attach the UnknownTransactionCommitResult error label when commitTransaction fails and the result of the transaction is unknown.

      When UnknownTransactionCommitResult is returned it is expected that a client can re-run commitTransaction.

      A non-exhaustive list of errors that should be labelled UnknownTransactionCommitResult are:

      // Retryable writes errors:
      {ok: 0, code: 11600, codeName: "InterruptedAtShutdown"}
      {ok: 0, code: 11602, codeName: "InterruptedDueToStepDown"}
      {ok: 0, code: 10107, codeName: "NotMaster"}
      {ok: 0, code: 13435, codeName: "NotMasterNoSlaveOk"}
      {ok: 0, code: 13436, codeName: "NotMasterOrSecondary"}
      {ok: 0, code: 189, codeName: "PrimarySteppedDown"}
      {ok: 0, code: 91, codeName: "ShutdownInProgress"}
      {ok: 0, code: 7, codeName: "HostNotFound"}
      {ok: 0, code: 6, codeName: "HostUnreachable"}
      {ok: 0, code: 89, codeName: "NetworkTimeout"}
      {ok: 0, code: 9001, codeName: "SocketException"}
      
      // maxTimeMS on commit error:
      {ok: 0, code: 50, codeName: "MaxTimeMSExpired"}
      
      // Any write concern error except UnsatisfiableWriteConcern and UnknownReplWriteConcern, eg:
      {ok:1, writeConcernError: {code: 64, codeName: "WriteConcernFailed", errmsg: "waiting for replication timed out", errInfo: {wtimeout: True}}}
      {ok:1, writeConcernError: {code: 64, codeName: "WriteConcernFailed", errmsg: "multiple errors reported : {...} at shardName1 :: and :: {...} at shardName2"}}
      {ok:1, writeConcernError: {code: 11600, codeName: "InterruptedAtShutdown"}}
      {ok:1, writeConcernError: {code: 11601, codeName: "Interrupted"}}
      {ok:1, writeConcernError: {code: 11602, codeName: "InterruptedDueToStepDown"}}
      {ok:1, writeConcernError: {code: 91, codeName: "ShutdownInProgress"}}
      {ok:1, writeConcernError: {code: 189, codeName: "PrimarySteppedDown"}}
      {ok:1, writeConcernError: {code: 50, codeName: "MaxTimeMSExpired"}}
      

            Assignee:
            backlog-server-repl [DO NOT USE] Backlog - Replication Team
            Reporter:
            shane.harvey@mongodb.com Shane Harvey
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: