diff options
Diffstat (limited to 'jstests/libs/retryable_writes_util.js')
-rw-r--r-- | jstests/libs/retryable_writes_util.js | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/jstests/libs/retryable_writes_util.js b/jstests/libs/retryable_writes_util.js index d545f4e9ed8..5105157eba1 100644 --- a/jstests/libs/retryable_writes_util.js +++ b/jstests/libs/retryable_writes_util.js @@ -2,14 +2,22 @@ * Utilities for testing retryable writes. */ var RetryableWritesUtil = (function() { - const retryableWriteCommands = + /** + * Returns true if the error code is retryable, assuming the command is idempotent. + */ + function isRetryableCode(code) { + return ErrorCodes.isNetworkError(code) || ErrorCodes.isNotMasterError(code) || + ErrorCodes.isWriteConcernError(code) || ErrorCodes.isInterruption(code); + } + + const kRetryableWriteCommands = new Set(["delete", "findandmodify", "findAndModify", "insert", "update"]); /** * Returns true if the command name is that of a retryable write command. */ function isRetryableWriteCmdName(cmdName) { - return retryableWriteCommands.has(cmdName); + return kRetryableWriteCommands.has(cmdName); } const kStorageEnginesWithoutDocumentLocking = new Set(["ephemeralForTest", "mmapv1"]); @@ -22,5 +30,5 @@ var RetryableWritesUtil = (function() { return !kStorageEnginesWithoutDocumentLocking.has(storageEngineName); } - return {isRetryableWriteCmdName, storageEngineSupportsRetryableWrites}; + return {isRetryableCode, isRetryableWriteCmdName, storageEngineSupportsRetryableWrites}; })(); |