diff options
Diffstat (limited to 'src/mongo/db/clientcursor.cpp')
-rw-r--r-- | src/mongo/db/clientcursor.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mongo/db/clientcursor.cpp b/src/mongo/db/clientcursor.cpp index 860e5027fc1..2a471eb1288 100644 --- a/src/mongo/db/clientcursor.cpp +++ b/src/mongo/db/clientcursor.cpp @@ -164,7 +164,10 @@ GenericCursor ClientCursor::toGenericCursor() const { ClientCursorPin::ClientCursorPin(OperationContext* opCtx, ClientCursor* cursor, CursorManager* cursorManager) - : _opCtx(opCtx), _cursor(cursor), _cursorManager(cursorManager) { + : _opCtx(opCtx), + _cursor(cursor), + _cursorManager(cursorManager), + _interruptibleLockGuard(std::make_unique<InterruptibleLockGuard>(opCtx->lockState())) { invariant(_cursor); invariant(_cursor->_operationUsingCursor); invariant(!_cursor->_disposed); @@ -181,6 +184,7 @@ ClientCursorPin::ClientCursorPin(ClientCursorPin&& other) : _opCtx(other._opCtx), _cursor(other._cursor), _cursorManager(other._cursorManager), + _interruptibleLockGuard(std::move(other._interruptibleLockGuard)), _shouldSaveRecoveryUnit(other._shouldSaveRecoveryUnit) { // The pinned cursor is being transferred to us from another pin. The 'other' pin must have a // pinned cursor. @@ -217,6 +221,8 @@ ClientCursorPin& ClientCursorPin::operator=(ClientCursorPin&& other) { _cursorManager = other._cursorManager; other._cursorManager = nullptr; + _interruptibleLockGuard = std::move(other._interruptibleLockGuard); + _shouldSaveRecoveryUnit = other._shouldSaveRecoveryUnit; other._shouldSaveRecoveryUnit = false; |