diff options
author | Matthew Saltz <matthew.saltz@mongodb.com> | 2019-01-18 15:40:07 -0500 |
---|---|---|
committer | Matthew Saltz <matthew.saltz@mongodb.com> | 2019-02-25 17:48:14 -0500 |
commit | 35372c0918d1e6e15cc95ecc2883c080c1b198dc (patch) | |
tree | 8d1446cb4ac9ff3a4e0d916862a14613357d830c /src/mongo/db/session_catalog_mongod.cpp | |
parent | bacb6b67706a2c057fcd0f76a38f416b225aa69a (diff) | |
download | mongo-35372c0918d1e6e15cc95ecc2883c080c1b198dc.tar.gz |
SERVER-37348 Make replication applier batches uninterruptible
Diffstat (limited to 'src/mongo/db/session_catalog_mongod.cpp')
-rw-r--r-- | src/mongo/db/session_catalog_mongod.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mongo/db/session_catalog_mongod.cpp b/src/mongo/db/session_catalog_mongod.cpp index 7ed1d5359af..f99cce19ef8 100644 --- a/src/mongo/db/session_catalog_mongod.cpp +++ b/src/mongo/db/session_catalog_mongod.cpp @@ -242,7 +242,7 @@ void MongoDOperationContextSession::checkOut(OperationContext* opCtx, const std: MongoDOperationContextSessionWithoutRefresh::MongoDOperationContextSessionWithoutRefresh( OperationContext* opCtx) - : _operationContextSession(opCtx) { + : _operationContextSession(opCtx), _opCtx(opCtx) { invariant(!opCtx->getClient()->isInDirectClient()); const auto clientTxnNumber = *opCtx->getTxnNumber(); @@ -250,7 +250,12 @@ MongoDOperationContextSessionWithoutRefresh::MongoDOperationContextSessionWithou txnParticipant.beginOrContinueTransactionUnconditionally(opCtx, clientTxnNumber); } -MongoDOperationContextSessionWithoutRefresh::~MongoDOperationContextSessionWithoutRefresh() = - default; +MongoDOperationContextSessionWithoutRefresh::~MongoDOperationContextSessionWithoutRefresh() { + const auto txnParticipant = TransactionParticipant::get(_opCtx); + // A session on secondaries should never be checked back in with a TransactionParticipant that + // isn't prepared, aborted, or committed. + invariant(!txnParticipant.inMultiDocumentTransaction() || + txnParticipant.transactionIsPrepared()); +} } // namespace mongo |