WiredTigerSession* WiredTigerRecoveryUnit::getSession() { if (!_isActive()) { _txnOpen(); _setState(_inUnitOfWork() ? State::kActive : State::kActiveNotInUnitOfWork); } return _session.get(); }
WiredTigerSession* WiredTigerRecoveryUnit::getSession(OperationContext* opCtx) { _ensureSession(); if (!_active) { _txnOpen(opCtx); } return _session; }
WiredTigerSession* WiredTigerRecoveryUnit::getSession(OperationContext* opCtx) { if (!_session) { _session = _sessionCache->getSession(); } if (!_active) { _txnOpen(opCtx); } return _session; }
WiredTigerSession* WiredTigerRecoveryUnit::getSession() { if ( !_session ) { _session = _sessionCache->getSession(); } if ( !_active ) { _txnOpen(); } return _session; }
MobileSession* MobileRecoveryUnit::getSession(OperationContext* opCtx, bool readOnly) { RECOVERY_UNIT_TRACE() << " getSession called with readOnly:" << (readOnly ? "TRUE" : "FALSE"); invariant(_inUnitOfWork || readOnly); if (!_active) { _txnOpen(opCtx, readOnly); } return _session.get(); }
void MobileRecoveryUnit::beginUnitOfWork(OperationContext* opCtx) { invariant(!_areWriteUnitOfWorksBanned); invariant(!_inUnitOfWork); RECOVERY_UNIT_TRACE() << " Unit of work Active."; if (_active) { // Confirm a write transaction is not running invariant(_isReadOnly); // Rollback read transaction running outside wuow _txnClose(false); } _txnOpen(opCtx, false); _inUnitOfWork = true; }