summaryrefslogtreecommitdiff
path: root/src/mongo/db/transaction_participant_retryable_writes_test.cpp
diff options
context:
space:
mode:
authorJudah Schvimer <judah@mongodb.com>2019-06-19 14:04:09 -0400
committerJudah Schvimer <judah@mongodb.com>2019-06-25 14:49:15 -0400
commit58f209ca5ebe15ffbaec95b26f5b6a7b957f6510 (patch)
tree96d657c8523d988cd5d87293eb4f6df904438d7d /src/mongo/db/transaction_participant_retryable_writes_test.cpp
parent46612abe6bd2c8ae9dc7e0e5ce1b253e55a4f779 (diff)
downloadmongo-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.cpp81
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();
}