summaryrefslogtreecommitdiff
path: root/src/mongo/db/initialize_operation_session_info.cpp
diff options
context:
space:
mode:
authorCheahuychou Mao <mao.cheahuychou@gmail.com>2021-07-30 07:59:06 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-08-14 19:06:10 +0000
commit507db599d04640d4585c6cf85ae9143fc1e628f2 (patch)
tree1697969e431b57b35a682a4e65b9dc31a364319b /src/mongo/db/initialize_operation_session_info.cpp
parent632105d33ab6931e86626db08160800d41bb1329 (diff)
downloadmongo-507db599d04640d4585c6cf85ae9143fc1e628f2.tar.gz
SERVER-58751 Make logical session cache track related sessions as one logical session
Diffstat (limited to 'src/mongo/db/initialize_operation_session_info.cpp')
-rw-r--r--src/mongo/db/initialize_operation_session_info.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mongo/db/initialize_operation_session_info.cpp b/src/mongo/db/initialize_operation_session_info.cpp
index afa0c739b6f..c655b9ae7f7 100644
--- a/src/mongo/db/initialize_operation_session_info.cpp
+++ b/src/mongo/db/initialize_operation_session_info.cpp
@@ -94,6 +94,12 @@ OperationSessionInfoFromClient initializeOperationSessionInfo(OperationContext*
return {};
}
+ if (getParentSessionId(lsid)) {
+ uassert(ErrorCodes::InvalidOptions,
+ "Internal sessions are not supported outside of transactions",
+ osi.getTxnNumber() && osi.getAutocommit() && !osi.getAutocommit().value());
+ }
+
opCtx->setLogicalSessionId(std::move(lsid));
uassertStatusOK(lsc->vivify(opCtx, opCtx->getLogicalSessionId().get()));
} else {