summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSanika Phanse <sanika.phanse@mongodb.com>2022-01-24 19:21:10 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-01-24 20:47:47 +0000
commit6b587168a727843ae46ee5da9be59bfe224b6649 (patch)
tree8e2799a45c57470773a5b02f9d500a2e15d7721e /src
parent757f44e1a1cc496f8030e00249aaf43163a85677 (diff)
downloadmongo-6b587168a727843ae46ee5da9be59bfe224b6649.tar.gz
SERVER-61121 Make TransactionMetricsObserver support TxnNumberAndRetryCounter
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/stats/single_transaction_stats.cpp3
-rw-r--r--src/mongo/db/stats/single_transaction_stats.h10
-rw-r--r--src/mongo/db/transaction_metrics_observer.h4
-rw-r--r--src/mongo/db/transaction_participant.cpp5
4 files changed, 12 insertions, 10 deletions
diff --git a/src/mongo/db/stats/single_transaction_stats.cpp b/src/mongo/db/stats/single_transaction_stats.cpp
index 386a2568d45..3234998fb28 100644
--- a/src/mongo/db/stats/single_transaction_stats.cpp
+++ b/src/mongo/db/stats/single_transaction_stats.cpp
@@ -116,7 +116,7 @@ void SingleTransactionStats::report(BSONObjBuilder* builder,
TickSource* tickSource,
TickSource::Tick curTick) const {
BSONObjBuilder parametersBuilder(builder->subobjStart("parameters"));
- parametersBuilder.append("txnNumber", _txnNumber);
+ parametersBuilder.append("txnNumber", _txnNumberAndRetryCounter.getTxnNumber());
if (!isForMultiDocumentTransaction()) {
// For retryable writes, we only include the txnNumber.
@@ -124,6 +124,7 @@ void SingleTransactionStats::report(BSONObjBuilder* builder,
return;
}
+ parametersBuilder.append("txnRetryCounter", *_txnNumberAndRetryCounter.getTxnRetryCounter());
parametersBuilder.append("autocommit", *_autoCommit);
readConcernArgs.appendInfo(&parametersBuilder);
parametersBuilder.done();
diff --git a/src/mongo/db/stats/single_transaction_stats.h b/src/mongo/db/stats/single_transaction_stats.h
index 51524c8d01c..fa987e08a02 100644
--- a/src/mongo/db/stats/single_transaction_stats.h
+++ b/src/mongo/db/stats/single_transaction_stats.h
@@ -62,8 +62,10 @@ public:
}
};
- SingleTransactionStats() : _txnNumber(kUninitializedTxnNumber){};
- SingleTransactionStats(TxnNumber txnNumber) : _txnNumber(txnNumber){};
+ SingleTransactionStats()
+ : _txnNumberAndRetryCounter(kUninitializedTxnNumber, kUninitializedTxnRetryCounter){};
+ SingleTransactionStats(TxnNumberAndRetryCounter txnNumberAndRetryCounter)
+ : _txnNumberAndRetryCounter(txnNumberAndRetryCounter){};
/**
* Sets the transaction's start time, only if it hasn't already been set.
@@ -226,8 +228,8 @@ public:
TickSource::Tick curTick) const;
private:
- // The transaction number of the transaction.
- TxnNumber _txnNumber;
+ // The struct containing the transaction number and transaction retry counter.
+ TxnNumberAndRetryCounter _txnNumberAndRetryCounter;
// Unset for retryable write, 'false' for multi-document transaction. Value 'true' is
// for future use.
diff --git a/src/mongo/db/transaction_metrics_observer.h b/src/mongo/db/transaction_metrics_observer.h
index c985beb7af0..510d3dc3faa 100644
--- a/src/mongo/db/transaction_metrics_observer.h
+++ b/src/mongo/db/transaction_metrics_observer.h
@@ -110,8 +110,8 @@ public:
* Resets the SingleTransactionStats object stored in this TransactionMetricsObserver instance,
* preparing it for the new transaction or retryable write with the given number.
*/
- void resetSingleTransactionStats(TxnNumber txnNumber) {
- _singleTransactionStats = SingleTransactionStats(txnNumber);
+ void resetSingleTransactionStats(TxnNumberAndRetryCounter txnNumberAndRetryCounter) {
+ _singleTransactionStats = SingleTransactionStats(txnNumberAndRetryCounter);
}
private:
diff --git a/src/mongo/db/transaction_participant.cpp b/src/mongo/db/transaction_participant.cpp
index feb78e06ab2..857eb917a9f 100644
--- a/src/mongo/db/transaction_participant.cpp
+++ b/src/mongo/db/transaction_participant.cpp
@@ -2585,8 +2585,7 @@ void TransactionParticipant::Participant::_setNewTxnNumberAndRetryCounter(
_resetTransactionState(lk, TransactionState::kNone);
// Reset the transactions metrics
- o(lk).transactionMetricsObserver.resetSingleTransactionStats(
- txnNumberAndRetryCounter.getTxnNumber());
+ o(lk).transactionMetricsObserver.resetSingleTransactionStats(txnNumberAndRetryCounter);
}
void RetryableWriteTransactionParticipantCatalog::addParticipant(
@@ -2846,7 +2845,7 @@ void TransactionParticipant::Participant::_invalidate(WithLock wl) {
// Reset the transactions metrics.
o(wl).transactionMetricsObserver.resetSingleTransactionStats(
- o().activeTxnNumberAndRetryCounter.getTxnNumber());
+ o().activeTxnNumberAndRetryCounter);
}
void TransactionParticipant::Participant::_resetRetryableWriteState() {