From 58f209ca5ebe15ffbaec95b26f5b6a7b957f6510 Mon Sep 17 00:00:00 2001 From: Judah Schvimer Date: Wed, 19 Jun 2019 14:04:09 -0400 Subject: SERVER-36529 OpObservers for session operations should pass SessionTxnRecord --- ...ansaction_participant_retryable_writes_test.cpp | 81 ++++++++++++++++------ 1 file changed, 58 insertions(+), 23 deletions(-) (limited to 'src/mongo/db/transaction_participant_retryable_writes_test.cpp') 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(); } -- cgit v1.2.1