summaryrefslogtreecommitdiff
path: root/src/mongo/db/transaction_validation.cpp
diff options
context:
space:
mode:
authorJordi Serra Torrens <jordi.serra-torrens@mongodb.com>2021-06-17 16:43:15 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-07-22 08:13:16 +0000
commit5ca770642be40552592e00a6290ee7a4c5c1addb (patch)
tree4e22acc6e46b7202ea4c8aefb824da76a2810def /src/mongo/db/transaction_validation.cpp
parent85b7fdfe5973c41c6835e89b932640b32d173503 (diff)
downloadmongo-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.cpp19
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),