summaryrefslogtreecommitdiff
path: root/src/mongo/db/initialize_operation_session_info.cpp
diff options
context:
space:
mode:
authorJack Mulrow <jack.mulrow@mongodb.com>2017-11-13 19:33:45 -0500
committerJack Mulrow <jack.mulrow@mongodb.com>2017-11-17 16:01:19 -0500
commit97af8701b538754261e566b26fa22cb4b54710f3 (patch)
tree1326cc7af7e461f5689f5c6c52e857c0a9de01ba /src/mongo/db/initialize_operation_session_info.cpp
parent69a17fc7d0546651c4229f246292086982441346 (diff)
downloadmongo-97af8701b538754261e566b26fa22cb4b54710f3.tar.gz
SERVER-31941 Disallow retryable writes in storage engines that do not support document-level locking
Diffstat (limited to 'src/mongo/db/initialize_operation_session_info.cpp')
-rw-r--r--src/mongo/db/initialize_operation_session_info.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mongo/db/initialize_operation_session_info.cpp b/src/mongo/db/initialize_operation_session_info.cpp
index b4eb785e2c5..9db8ab8c0c8 100644
--- a/src/mongo/db/initialize_operation_session_info.cpp
+++ b/src/mongo/db/initialize_operation_session_info.cpp
@@ -42,7 +42,8 @@ namespace mongo {
void initializeOperationSessionInfo(OperationContext* opCtx,
const BSONObj& requestBody,
bool requiresAuth,
- bool canAcceptTxnNumber) {
+ bool isReplSetMemberOrMongos,
+ bool supportsDocLocking) {
if (!requiresAuth) {
return;
}
@@ -85,7 +86,11 @@ void initializeOperationSessionInfo(OperationContext* opCtx,
opCtx->getLogicalSessionId());
uassert(ErrorCodes::IllegalOperation,
"Transaction numbers are only allowed on a replica set member or mongos",
- canAcceptTxnNumber);
+ isReplSetMemberOrMongos);
+ uassert(ErrorCodes::IllegalOperation,
+ "Transaction numbers are only allowed on storage engines that support "
+ "document-level locking",
+ supportsDocLocking);
uassert(ErrorCodes::BadValue,
"Transaction number cannot be negative",
*osi.getTxnNumber() >= 0);