summaryrefslogtreecommitdiff
path: root/src/mongo/db/transaction
diff options
context:
space:
mode:
authorMatt Diener <matt.diener@mongodb.com>2022-10-12 20:19:44 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-10-12 21:06:32 +0000
commit02a79726b9109458d4eb37b010d58faf7332929b (patch)
tree03b789383d087ea67e627f8201e8f75b99a9e18e /src/mongo/db/transaction
parent112d7ad9e8eab0c0f8839a98d78b712b2eff9cbd (diff)
downloadmongo-02a79726b9109458d4eb37b010d58faf7332929b.tar.gz
SERVER-70264 make slowMS and sampleRate atomic
Diffstat (limited to 'src/mongo/db/transaction')
-rw-r--r--src/mongo/db/transaction/transaction_participant.cpp2
-rw-r--r--src/mongo/db/transaction/transaction_participant_test.cpp108
2 files changed, 55 insertions, 55 deletions
diff --git a/src/mongo/db/transaction/transaction_participant.cpp b/src/mongo/db/transaction/transaction_participant.cpp
index 81d09138ba9..bcb9bc689e4 100644
--- a/src/mongo/db/transaction/transaction_participant.cpp
+++ b/src/mongo/db/transaction/transaction_participant.cpp
@@ -2656,7 +2656,7 @@ void TransactionParticipant::Participant::_logSlowTransaction(
if (shouldLogSlowOpWithSampling(opCtx,
logv2::LogComponent::kTransaction,
opDuration,
- Milliseconds(serverGlobalParams.slowMS))
+ Milliseconds(serverGlobalParams.slowMS.load()))
.first) {
logv2::DynamicAttributes attr;
_transactionInfoForLog(
diff --git a/src/mongo/db/transaction/transaction_participant_test.cpp b/src/mongo/db/transaction/transaction_participant_test.cpp
index 61adbe097b6..971b81d2a91 100644
--- a/src/mongo/db/transaction/transaction_participant_test.cpp
+++ b/src/mongo/db/transaction/transaction_participant_test.cpp
@@ -3853,17 +3853,17 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowCommit) {
kNss, _uuid, BSON("_id" << 0), BSON("_id" << 0));
txnParticipant.addTransactionOperation(opCtx(), operation);
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
- serverGlobalParams.slowMS = 10;
- serverGlobalParams.sampleRate = 1;
+ serverGlobalParams.slowMS.store(10);
+ serverGlobalParams.sampleRate.store(1);
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
// serverGlobalParams may have been modified prior to this test, so we set them back to
// their default values.
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
tickSource->advance(Microseconds(11 * 1000));
@@ -3905,16 +3905,16 @@ TEST_F(TransactionsMetricsTest, LogPreparedTransactionInfoAfterSlowCommit) {
const int metricValue = 1;
setupAdditiveMetrics(metricValue, opCtx());
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
- serverGlobalParams.slowMS = 10;
- serverGlobalParams.sampleRate = 1;
+ serverGlobalParams.slowMS.store(10);
+ serverGlobalParams.sampleRate.store(1);
// Reset the global parameters to their original values after this test exits.
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
tickSource->advance(Microseconds(11 * 1000));
@@ -3955,16 +3955,16 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowAbort) {
txnParticipant.unstashTransactionResources(opCtx(), "abortTransaction");
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
- serverGlobalParams.slowMS = 10;
- serverGlobalParams.sampleRate = 1;
+ serverGlobalParams.slowMS.store(10);
+ serverGlobalParams.sampleRate.store(1);
// Reset the global parameters to their original values after this test exits.
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
tickSource->advance(Microseconds(11 * 1000));
@@ -4015,16 +4015,16 @@ TEST_F(TransactionsMetricsTest, LogPreparedTransactionInfoAfterSlowAbort) {
txnParticipant.unstashTransactionResources(opCtx(), "abortTransaction");
txnParticipant.prepareTransaction(opCtx(), {});
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
- serverGlobalParams.slowMS = 10;
- serverGlobalParams.sampleRate = 1;
+ serverGlobalParams.slowMS.store(10);
+ serverGlobalParams.sampleRate.store(1);
// Reset the global parameters to their original values after this test exits.
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
tickSource->advance(Microseconds(11 * 1000));
@@ -4076,16 +4076,16 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterExceptionInPrepare) {
txnParticipant.unstashTransactionResources(opCtx(), "prepareTransaction");
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
- serverGlobalParams.slowMS = 10;
- serverGlobalParams.sampleRate = 1;
+ serverGlobalParams.slowMS.store(10);
+ serverGlobalParams.sampleRate.store(1);
// Reset the global parameters to their original values after this test exits.
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
tickSource->advance(Microseconds(11 * 1000));
@@ -4147,16 +4147,16 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowStashedAbort) {
ASSERT(txnResourceStashLocker);
const auto lockerInfo = txnResourceStashLocker->getLockerInfo(boost::none);
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
- serverGlobalParams.slowMS = 10;
- serverGlobalParams.sampleRate = 1;
+ serverGlobalParams.slowMS.store(10);
+ serverGlobalParams.sampleRate.store(1);
// Reset the global parameters to their original values after this test exits.
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
tickSource->advance(Microseconds(11 * 1000));
@@ -4173,20 +4173,20 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoZeroSampleRate) {
auto sessionCheckout = checkOutSession();
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
- serverGlobalParams.slowMS = 10;
+ serverGlobalParams.slowMS.store(10);
// Set the sample rate to 0 to never log this transaction.
- serverGlobalParams.sampleRate = 0;
+ serverGlobalParams.sampleRate.store(0);
auto txnParticipant = TransactionParticipant::get(opCtx());
txnParticipant.unstashTransactionResources(opCtx(), "commitTransaction");
// Reset the global parameters to their original values after this test exits.
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
tickSource->advance(Microseconds(11 * 1000));
@@ -4204,17 +4204,17 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoVerbosityInfo) {
auto txnParticipant = TransactionParticipant::get(opCtx());
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
// Set a high slow operation threshold to avoid the transaction being logged as slow.
- serverGlobalParams.slowMS = 10000;
- serverGlobalParams.sampleRate = 1;
+ serverGlobalParams.slowMS.store(10000);
+ serverGlobalParams.sampleRate.store(1);
// Reset the global parameters to their original values after this test exits.
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
// Set verbosity level of transaction components to info.
@@ -4242,17 +4242,17 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoVerbosityDebug) {
txnParticipant.unstashTransactionResources(opCtx(), "commitTransaction");
- const auto originalSlowMS = serverGlobalParams.slowMS;
- const auto originalSampleRate = serverGlobalParams.sampleRate;
+ const auto originalSlowMS = serverGlobalParams.slowMS.load();
+ const auto originalSampleRate = serverGlobalParams.sampleRate.load();
// Set a high slow operation threshold to avoid the transaction being logged as slow.
- serverGlobalParams.slowMS = 10000;
- serverGlobalParams.sampleRate = 1;
+ serverGlobalParams.slowMS.store(10000);
+ serverGlobalParams.sampleRate.store(1);
// Reset the global parameters to their original values after this test exits.
ON_BLOCK_EXIT([originalSlowMS, originalSampleRate] {
- serverGlobalParams.slowMS = originalSlowMS;
- serverGlobalParams.sampleRate = originalSampleRate;
+ serverGlobalParams.slowMS.store(originalSlowMS);
+ serverGlobalParams.sampleRate.store(originalSampleRate);
});
startCapturingLogMessages();