diff options
author | Jordi Serra Torrens <jordi.serra-torrens@mongodb.com> | 2021-06-17 16:43:15 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-07-22 08:13:16 +0000 |
commit | 5ca770642be40552592e00a6290ee7a4c5c1addb (patch) | |
tree | 4e22acc6e46b7202ea4c8aefb824da76a2810def /src/mongo/db/transaction_validation.cpp | |
parent | 85b7fdfe5973c41c6835e89b932640b32d173503 (diff) | |
download | mongo-5ca770642be40552592e00a6290ee7a4c5c1addb.tar.gz |
SERVER-56648 Make dropCollection resilient to network partitions
(cherry picked from commit 210c9d9582f0833d6a15a928779a02f4588f168b)
Diffstat (limited to 'src/mongo/db/transaction_validation.cpp')
-rw-r--r-- | src/mongo/db/transaction_validation.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/mongo/db/transaction_validation.cpp b/src/mongo/db/transaction_validation.cpp index d0ceebc6edb..d23d2de6e5d 100644 --- a/src/mongo/db/transaction_validation.cpp +++ b/src/mongo/db/transaction_validation.cpp @@ -45,13 +45,16 @@ using namespace fmt::literals; namespace { -const StringMap<int> retryableWriteCommands = {{"delete", 1}, - {"findandmodify", 1}, - {"findAndModify", 1}, - {"insert", 1}, - {"update", 1}, - {"_recvChunkStart", 1}, - {"_configsvrRemoveTags", 1}}; +const StringMap<int> retryableWriteCommands = { + {"delete", 1}, + {"findandmodify", 1}, + {"findAndModify", 1}, + {"insert", 1}, + {"update", 1}, + {"_recvChunkStart", 1}, + {"_configsvrRemoveTags", 1}, + {"_shardsvrDropCollectionParticipant", 1}, +}; // Commands that can be sent with session info but should not check out a session. const StringMap<int> skipSessionCheckoutList = { @@ -97,7 +100,7 @@ void validateSessionOptions(const OperationSessionInfoFromClient& sessionOptions } if (!sessionOptions.getAutocommit() && sessionOptions.getTxnNumber()) { - uassert(50768, + uassert(ErrorCodes::NotARetryableWriteCommand, "txnNumber may only be provided for multi-document transactions and retryable " "write commands. autocommit:false was not provided, and {} is not a retryable " "write command."_format(cmdName), |