-
Type: Task
-
Resolution: Won't Fix
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
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"}}
- related to
-
SERVER-37746 Shell doesn't correctly implement the transactions API for error labels
- Closed