From ed610057b4a87cf96e3ba12bea8ae258a569906e Mon Sep 17 00:00:00 2001 From: Eric Milkie Date: Mon, 4 Nov 2019 18:49:17 +0000 Subject: SERVER-44368 protect opCtx's Locker with Client lock --- src/mongo/db/client.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/mongo/db/client.cpp') diff --git a/src/mongo/db/client.cpp b/src/mongo/db/client.cpp index 3bac054c2b1..a24e7a06453 100644 --- a/src/mongo/db/client.cpp +++ b/src/mongo/db/client.cpp @@ -41,6 +41,7 @@ #include "mongo/base/status.h" #include "mongo/db/lasterror.h" +#include "mongo/db/operation_context.h" #include "mongo/db/service_context.h" #include "mongo/stdx/thread.h" #include "mongo/util/concurrency/thread_name.h" @@ -145,6 +146,12 @@ Client* Client::getCurrent() { return currentClient.get(); } +std::unique_ptr Client::swapLockState(std::unique_ptr locker) { + scoped_spinlock scopedLock(_lock); + invariant(_opCtx); + return _opCtx->swapLockState(std::move(locker), scopedLock); +} + Client& cc() { invariant(haveClient()); return *Client::getCurrent(); -- cgit v1.2.1