diff options
author | Judah Schvimer <judah@mongodb.com> | 2019-06-19 14:04:09 -0400 |
---|---|---|
committer | Judah Schvimer <judah@mongodb.com> | 2019-06-25 14:49:15 -0400 |
commit | 58f209ca5ebe15ffbaec95b26f5b6a7b957f6510 (patch) | |
tree | 96d657c8523d988cd5d87293eb4f6df904438d7d /src/mongo/db/transaction_participant_retryable_writes_test.cpp | |
parent | 46612abe6bd2c8ae9dc7e0e5ce1b253e55a4f779 (diff) | |
download | mongo-58f209ca5ebe15ffbaec95b26f5b6a7b957f6510.tar.gz |
SERVER-36529 OpObservers for session operations should pass SessionTxnRecord
Diffstat (limited to 'src/mongo/db/transaction_participant_retryable_writes_test.cpp')
-rw-r--r-- | src/mongo/db/transaction_participant_retryable_writes_test.cpp | 81 |
1 files changed, 58 insertions, 23 deletions
diff --git a/src/mongo/db/transaction_participant_retryable_writes_test.cpp b/src/mongo/db/transaction_participant_retryable_writes_test.cpp index a50b3a95ea3..49074871374 100644 --- a/src/mongo/db/transaction_participant_retryable_writes_test.cpp +++ b/src/mongo/db/transaction_participant_retryable_writes_test.cpp @@ -236,8 +236,14 @@ protected: WriteUnitOfWork wuow(opCtx()); const auto opTime = logOp(opCtx(), kNss, uuid, session->getSessionId(), txnNum, stmtId, prevOpTime); - txnParticipant.onWriteOpCompletedOnPrimary( - opCtx(), txnNum, {stmtId}, opTime, Date_t::now(), txnState, boost::none); + + SessionTxnRecord sessionTxnRecord; + sessionTxnRecord.setSessionId(session->getSessionId()); + sessionTxnRecord.setTxnNum(txnNum); + sessionTxnRecord.setLastWriteOpTime(opTime); + sessionTxnRecord.setLastWriteDate(Date_t::now()); + sessionTxnRecord.setState(txnState); + txnParticipant.onWriteOpCompletedOnPrimary(opCtx(), {stmtId}, sessionTxnRecord); wuow.commit(); return opTime; @@ -396,8 +402,12 @@ TEST_F(TransactionParticipantRetryableWritesTest, SessionTransactionsCollectionN const auto uuid = UUID::gen(); const auto opTime = logOp(opCtx(), kNss, uuid, sessionId, txnNum, 0); - ASSERT_THROWS(txnParticipant.onWriteOpCompletedOnPrimary( - opCtx(), txnNum, {0}, opTime, Date_t::now(), boost::none, boost::none), + SessionTxnRecord sessionTxnRecord; + sessionTxnRecord.setSessionId(sessionId); + sessionTxnRecord.setTxnNum(txnNum); + sessionTxnRecord.setLastWriteOpTime(opTime); + sessionTxnRecord.setLastWriteDate(Date_t::now()); + ASSERT_THROWS(txnParticipant.onWriteOpCompletedOnPrimary(opCtx(), {0}, sessionTxnRecord), AssertionException); } @@ -441,7 +451,7 @@ DEATH_TEST_F(TransactionParticipantRetryableWritesTest, DEATH_TEST_F(TransactionParticipantRetryableWritesTest, WriteOpCompletedOnPrimaryForOldTransactionInvariants, - "Invariant failure txnNumber == o().activeTxnNumber") { + "Invariant failure sessionTxnRecord.getTxnNum() == o().activeTxnNumber") { auto txnParticipant = TransactionParticipant::get(opCtx()); txnParticipant.refreshFromStorageIfNeeded(opCtx()); @@ -455,8 +465,13 @@ DEATH_TEST_F(TransactionParticipantRetryableWritesTest, AutoGetCollection autoColl(opCtx(), kNss, MODE_IX); WriteUnitOfWork wuow(opCtx()); const auto opTime = logOp(opCtx(), kNss, uuid, sessionId, txnNum, 0); - txnParticipant.onWriteOpCompletedOnPrimary( - opCtx(), txnNum, {0}, opTime, Date_t::now(), boost::none, boost::none); + + SessionTxnRecord sessionTxnRecord; + sessionTxnRecord.setSessionId(sessionId); + sessionTxnRecord.setTxnNum(txnNum); + sessionTxnRecord.setLastWriteOpTime(opTime); + sessionTxnRecord.setLastWriteDate(Date_t::now()); + txnParticipant.onWriteOpCompletedOnPrimary(opCtx(), {0}, sessionTxnRecord); wuow.commit(); } @@ -464,14 +479,19 @@ DEATH_TEST_F(TransactionParticipantRetryableWritesTest, AutoGetCollection autoColl(opCtx(), kNss, MODE_IX); WriteUnitOfWork wuow(opCtx()); const auto opTime = logOp(opCtx(), kNss, uuid, sessionId, txnNum - 1, 0); - txnParticipant.onWriteOpCompletedOnPrimary( - opCtx(), txnNum - 1, {0}, opTime, Date_t::now(), boost::none, boost::none); + + SessionTxnRecord sessionTxnRecord; + sessionTxnRecord.setSessionId(sessionId); + sessionTxnRecord.setTxnNum(txnNum - 1); + sessionTxnRecord.setLastWriteOpTime(opTime); + sessionTxnRecord.setLastWriteDate(Date_t::now()); + txnParticipant.onWriteOpCompletedOnPrimary(opCtx(), {0}, sessionTxnRecord); } } DEATH_TEST_F(TransactionParticipantRetryableWritesTest, WriteOpCompletedOnPrimaryForInvalidatedTransactionInvariants, - "Invariant failure txnNumber == o().activeTxnNumber") { + "Invariant failure sessionTxnRecord.getTxnNum() == o().activeTxnNumber") { auto txnParticipant = TransactionParticipant::get(opCtx()); txnParticipant.refreshFromStorageIfNeeded(opCtx()); @@ -484,8 +504,13 @@ DEATH_TEST_F(TransactionParticipantRetryableWritesTest, const auto opTime = logOp(opCtx(), kNss, uuid, *opCtx()->getLogicalSessionId(), txnNum, 0); txnParticipant.invalidate(opCtx()); - txnParticipant.onWriteOpCompletedOnPrimary( - opCtx(), txnNum, {0}, opTime, Date_t::now(), boost::none, boost::none); + + SessionTxnRecord sessionTxnRecord; + sessionTxnRecord.setSessionId(*opCtx()->getLogicalSessionId()); + sessionTxnRecord.setTxnNum(txnNum); + sessionTxnRecord.setLastWriteOpTime(opTime); + sessionTxnRecord.setLastWriteDate(Date_t::now()); + txnParticipant.onWriteOpCompletedOnPrimary(opCtx(), {0}, sessionTxnRecord); } TEST_F(TransactionParticipantRetryableWritesTest, IncompleteHistoryDueToOpLogTruncation) { @@ -587,8 +612,13 @@ TEST_F(TransactionParticipantRetryableWritesTest, ErrorOnlyWhenStmtIdBeingChecke 1, {}, OplogSlot()); - txnParticipant.onWriteOpCompletedOnPrimary( - opCtx(), txnNum, {1}, opTime, wallClockTime, boost::none, boost::none); + + SessionTxnRecord sessionTxnRecord; + sessionTxnRecord.setSessionId(sessionId); + sessionTxnRecord.setTxnNum(txnNum); + sessionTxnRecord.setLastWriteOpTime(opTime); + sessionTxnRecord.setLastWriteDate(Date_t::now()); + txnParticipant.onWriteOpCompletedOnPrimary(opCtx(), {1}, sessionTxnRecord); wuow.commit(); return opTime; @@ -616,13 +646,13 @@ TEST_F(TransactionParticipantRetryableWritesTest, ErrorOnlyWhenStmtIdBeingChecke link, OplogSlot()); - txnParticipant.onWriteOpCompletedOnPrimary(opCtx(), - txnNum, - {kIncompleteHistoryStmtId}, - opTime, - wallClockTime, - boost::none, - boost::none); + SessionTxnRecord sessionTxnRecord; + sessionTxnRecord.setSessionId(sessionId); + sessionTxnRecord.setTxnNum(txnNum); + sessionTxnRecord.setLastWriteOpTime(opTime); + sessionTxnRecord.setLastWriteDate(Date_t::now()); + txnParticipant.onWriteOpCompletedOnPrimary( + opCtx(), {kIncompleteHistoryStmtId}, sessionTxnRecord); wuow.commit(); } @@ -678,8 +708,13 @@ TEST_F(ShardTxnParticipantRetryableWritesTest, AutoGetCollection autoColl(opCtx(), kNss, MODE_IX); WriteUnitOfWork wuow(opCtx()); const auto opTime = logOp(opCtx(), kNss, uuid, sessionId, txnNum, 0); - txnParticipant.onWriteOpCompletedOnPrimary( - opCtx(), txnNum, {0}, opTime, Date_t::now(), boost::none, boost::none); + + SessionTxnRecord sessionTxnRecord; + sessionTxnRecord.setSessionId(sessionId); + sessionTxnRecord.setTxnNum(txnNum); + sessionTxnRecord.setLastWriteOpTime(opTime); + sessionTxnRecord.setLastWriteDate(Date_t::now()); + txnParticipant.onWriteOpCompletedOnPrimary(opCtx(), {0}, sessionTxnRecord); wuow.commit(); } |