diff options
author | Sanika Phanse <sanika.phanse@mongodb.com> | 2022-01-24 19:21:10 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-01-24 20:47:47 +0000 |
commit | 6b587168a727843ae46ee5da9be59bfe224b6649 (patch) | |
tree | 8e2799a45c57470773a5b02f9d500a2e15d7721e /src | |
parent | 757f44e1a1cc496f8030e00249aaf43163a85677 (diff) | |
download | mongo-6b587168a727843ae46ee5da9be59bfe224b6649.tar.gz |
SERVER-61121 Make TransactionMetricsObserver support TxnNumberAndRetryCounter
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/stats/single_transaction_stats.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/stats/single_transaction_stats.h | 10 | ||||
-rw-r--r-- | src/mongo/db/transaction_metrics_observer.h | 4 | ||||
-rw-r--r-- | src/mongo/db/transaction_participant.cpp | 5 |
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(¶metersBuilder); 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() { |