summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheahuychou Mao <mao.cheahuychou@gmail.com>2023-04-07 17:29:15 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-04-07 18:11:39 +0000
commite171d63d52e92ec6930219b110e6e15a0a033b54 (patch)
treedb7b0cfee5cf08b52fec196751a8573745b38963
parentab890282dd8d7be38037615afb3dbe2c4acba9a0 (diff)
downloadmongo-e171d63d52e92ec6930219b110e6e15a0a033b54.tar.gz
SERVER-75844 Fix race in QueryAnalysisSampleTracker
-rw-r--r--src/mongo/s/query_analysis_sample_tracker.cpp2
-rw-r--r--src/mongo/s/query_analysis_sampler.cpp2
2 files changed, 4 insertions, 0 deletions
diff --git a/src/mongo/s/query_analysis_sample_tracker.cpp b/src/mongo/s/query_analysis_sample_tracker.cpp
index 487f0b4cb13..2d598fb576c 100644
--- a/src/mongo/s/query_analysis_sample_tracker.cpp
+++ b/src/mongo/s/query_analysis_sample_tracker.cpp
@@ -149,6 +149,8 @@ BSONObj QueryAnalysisSampleTracker::CollectionSampleTracker::reportForCurrentOp(
}
BSONObj QueryAnalysisSampleTracker::reportForServerStatus() const {
+ stdx::lock_guard<Latch> lk(_mutex);
+
QueryAnalysisServerStatus res;
res.setActiveCollections(static_cast<int64_t>(_trackers.size()));
res.setTotalCollections(static_cast<int64_t>(_sampledNamespaces.size()));
diff --git a/src/mongo/s/query_analysis_sampler.cpp b/src/mongo/s/query_analysis_sampler.cpp
index 11ae0842645..742e3832ec5 100644
--- a/src/mongo/s/query_analysis_sampler.cpp
+++ b/src/mongo/s/query_analysis_sampler.cpp
@@ -116,6 +116,8 @@ void QueryAnalysisSampler::onStartup() {
auto periodicRunner = serviceContext->getPeriodicRunner();
invariant(periodicRunner);
+ stdx::lock_guard<Latch> lk(_mutex);
+
PeriodicRunner::PeriodicJob queryStatsRefresherJob(
"QueryAnalysisQueryStatsRefresher",
[this](Client* client) { _refreshQueryStats(); },