summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2019-01-16 15:29:58 -0500
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2019-01-16 15:33:09 -0500
commitfe187bdf22a6c67d5ff6f035d51a308870255e10 (patch)
tree7b44c0549c916ec45c7b096dee1f0921569909b1
parent9df4dbcffefe8f9cf2d669603f230c1f44ac5652 (diff)
downloadmongo-fe187bdf22a6c67d5ff6f035d51a308870255e10.tar.gz
SERVER-37880 Treat non-retryable errors during prepare as implied abort
-rw-r--r--src/mongo/db/transaction_coordinator_driver.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mongo/db/transaction_coordinator_driver.cpp b/src/mongo/db/transaction_coordinator_driver.cpp
index 00bcc9015d8..e8b8df291e8 100644
--- a/src/mongo/db/transaction_coordinator_driver.cpp
+++ b/src/mongo/db/transaction_coordinator_driver.cpp
@@ -590,6 +590,11 @@ Future<PrepareResponse> TransactionCoordinatorDriver::sendPrepareToShard(
LOG(3) << "Prepare stopped retrying due to retrying being cancelled";
return PrepareResponse{shardId, boost::none, boost::none};
}
+
+ if (!isRetryableError(status.code())) {
+ return PrepareResponse{shardId, CommitDecision::kAbort, boost::none};
+ }
+
uassertStatusOK(status);
MONGO_UNREACHABLE;
});