From 5b99e24bf230cb1b22b1b8df3f485438ca3ef911 Mon Sep 17 00:00:00 2001 From: Israel Hsu Date: Thu, 9 Mar 2023 04:18:42 +0000 Subject: SERVER-70996 Add serverStatus reporting for query analysis, reorg QueryAnalysis sample counting --- src/mongo/db/s/query_analysis_writer.cpp | 37 +++++++------------------------- 1 file changed, 8 insertions(+), 29 deletions(-) (limited to 'src/mongo/db/s/query_analysis_writer.cpp') diff --git a/src/mongo/db/s/query_analysis_writer.cpp b/src/mongo/db/s/query_analysis_writer.cpp index d0b508ae366..91433f6ffea 100644 --- a/src/mongo/db/s/query_analysis_writer.cpp +++ b/src/mongo/db/s/query_analysis_writer.cpp @@ -540,8 +540,8 @@ ExecutorFuture QueryAnalysisWriter::_addReadQuery(const UUID& sampleId, stdx::lock_guard lk(_mutex); if (_queries.add(doc)) { - auto counters = _getOrCreateSampleCounters(nss, *collUuid); - counters->incrementReads(doc.objsize()); + QueryAnalysisSampleCounters::get(opCtx).incrementReads( + nss, *collUuid, doc.objsize()); } }) .then([this] { @@ -590,8 +590,8 @@ ExecutorFuture QueryAnalysisWriter::addUpdateQuery( stdx::lock_guard lk(_mutex); if (_queries.add(doc)) { - auto counters = _getOrCreateSampleCounters(sampledUpdateCmd.nss, *collUuid); - counters->incrementWrites(doc.objsize()); + QueryAnalysisSampleCounters::get(opCtx).incrementWrites( + sampledUpdateCmd.nss, *collUuid, doc.objsize()); } }) .then([this] { @@ -640,8 +640,8 @@ ExecutorFuture QueryAnalysisWriter::addDeleteQuery( stdx::lock_guard lk(_mutex); if (_queries.add(doc)) { - auto counters = _getOrCreateSampleCounters(sampledDeleteCmd.nss, *collUuid); - counters->incrementWrites(doc.objsize()); + QueryAnalysisSampleCounters::get(opCtx).incrementWrites( + sampledDeleteCmd.nss, *collUuid, doc.objsize()); } }) .then([this] { @@ -692,8 +692,8 @@ ExecutorFuture QueryAnalysisWriter::addFindAndModifyQuery( stdx::lock_guard lk(_mutex); if (_queries.add(doc)) { - auto counters = _getOrCreateSampleCounters(sampledFindAndModifyCmd.nss, *collUuid); - counters->incrementWrites(doc.objsize()); + QueryAnalysisSampleCounters::get(opCtx).incrementWrites( + sampledFindAndModifyCmd.nss, *collUuid, doc.objsize()); } }) .then([this] { @@ -755,26 +755,5 @@ ExecutorFuture QueryAnalysisWriter::addDiff(const UUID& sampleId, }); } -void QueryAnalysisWriter::reportForCurrentOp(std::vector* ops) const { - for (auto it = _sampleCountersMap.begin(); it != _sampleCountersMap.end(); ++it) { - ops->push_back(it->second->reportCurrentOp()); - } -} - -std::shared_ptr QueryAnalysisWriter::_getOrCreateSampleCounters( - const NamespaceString& nss, const UUID& collUuid) { - auto it = _sampleCountersMap.find(collUuid); - if (it == _sampleCountersMap.end()) { - it = _sampleCountersMap.emplace(collUuid, std::make_shared(nss, collUuid)) - .first; - } else { - if (nss != it->second->getNss()) { - // TODO SERVER-73990 Make sure collection renames are handled correctly, and test. - it->second->setNss(nss); - } - } - return it->second; -} - } // namespace analyze_shard_key } // namespace mongo -- cgit v1.2.1