From d6e7f0c811acabd3405871d0e09f3d2d84fe9c1c Mon Sep 17 00:00:00 2001 From: Sarah Zhou Date: Mon, 6 Aug 2018 09:54:48 -0400 Subject: SERVER-35244 Dropping config db in 4.0.0-rc0 fails while it passes in 3.7.9 and earlier --- src/mongo/db/session_catalog.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/mongo/db/session_catalog.cpp') diff --git a/src/mongo/db/session_catalog.cpp b/src/mongo/db/session_catalog.cpp index 62f01f567a1..614e2ed8144 100644 --- a/src/mongo/db/session_catalog.cpp +++ b/src/mongo/db/session_catalog.cpp @@ -158,11 +158,15 @@ ScopedSession SessionCatalog::getOrCreateSession(OperationContext* opCtx, void SessionCatalog::invalidateSessions(OperationContext* opCtx, boost::optional singleSessionDoc) { - uassert(40528, - str::stream() << "Direct writes against " - << NamespaceString::kSessionTransactionsTableNamespace.ns() - << " cannot be performed using a transaction or on a session.", - !opCtx->getLogicalSessionId()); + auto replCoord = repl::ReplicationCoordinator::get(opCtx); + bool isReplSet = replCoord->getReplicationMode() == repl::ReplicationCoordinator::modeReplSet; + if (isReplSet) { + uassert(40528, + str::stream() << "Direct writes against " + << NamespaceString::kSessionTransactionsTableNamespace.ns() + << " cannot be performed using a transaction or on a session.", + !opCtx->getLogicalSessionId()); + } const auto invalidateSessionFn = [&](WithLock, SessionRuntimeInfoMap::iterator it) { auto& sri = it->second; -- cgit v1.2.1