diff options
author | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2020-06-05 15:13:14 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-06-08 18:02:44 +0000 |
commit | 14cb5634011e86800084cc822b2557992cc7222e (patch) | |
tree | 5b7cde5ac1e1a0ab90c54e208242a1b17f8429f9 | |
parent | 39cce3cb6dd9dee5d4941bd83be6df65f69a0cc4 (diff) | |
download | mongo-14cb5634011e86800084cc822b2557992cc7222e.tar.gz |
SERVER-48393 Exclude awaitable isMaster from serverStatus latency metrics
(cherry picked from commit 84033d0077d507491a6a80c2e1140bf6fd4055dc)
-rw-r--r-- | src/mongo/db/operation_context.h | 15 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_info.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/stats/top.cpp | 3 | ||||
-rw-r--r-- | src/mongo/s/commands/cluster_is_master_cmd.cpp | 3 |
4 files changed, 24 insertions, 0 deletions
diff --git a/src/mongo/db/operation_context.h b/src/mongo/db/operation_context.h index c5116e805b2..46626d843b7 100644 --- a/src/mongo/db/operation_context.h +++ b/src/mongo/db/operation_context.h @@ -267,6 +267,20 @@ public: return _writesAreReplicated; } + /** + * Returns true if operations' durations should be added to serverStatus latency metrics. + */ + bool shouldIncrementLatencyStats() const { + return _shouldIncrementLatencyStats; + } + + /** + * Sets the shouldIncrementLatencyStats flag. + */ + void setShouldIncrementLatencyStats(bool shouldIncrementLatencyStats) { + _shouldIncrementLatencyStats = shouldIncrementLatencyStats; + } + void markKillOnClientDisconnect(); /** @@ -568,6 +582,7 @@ private: Timer _elapsedTime; bool _writesAreReplicated = true; + bool _shouldIncrementLatencyStats = true; bool _shouldParticipateInFlowControl = true; bool _inMultiDocumentTransaction = false; bool _isStartingMultiDocumentTransaction = false; diff --git a/src/mongo/db/repl/replication_info.cpp b/src/mongo/db/repl/replication_info.cpp index e105a3469d9..617ac34bfc2 100644 --- a/src/mongo/db/repl/replication_info.cpp +++ b/src/mongo/db/repl/replication_info.cpp @@ -462,6 +462,9 @@ public: uassert(31373, "maxAwaitTimeMS must be a non-negative integer", *maxAwaitTimeMS >= 0); LOGV2_DEBUG(23904, 3, "Using maxAwaitTimeMS for awaitable isMaster protocol."); + + // Awaitable isMaster commands have high latency by design. + opCtx->setShouldIncrementLatencyStats(false); } else { uassert(31368, (topologyVersionElement diff --git a/src/mongo/db/stats/top.cpp b/src/mongo/db/stats/top.cpp index e445515cf4b..1674fe394d6 100644 --- a/src/mongo/db/stats/top.cpp +++ b/src/mongo/db/stats/top.cpp @@ -200,6 +200,9 @@ void Top::appendLatencyStats(const NamespaceString& nss, void Top::incrementGlobalLatencyStats(OperationContext* opCtx, uint64_t latency, Command::ReadWriteType readWriteType) { + if (!opCtx->shouldIncrementLatencyStats()) + return; + stdx::lock_guard<SimpleMutex> guard(_lock); _incrementHistogram(opCtx, latency, &_globalHistogramStats, readWriteType); } diff --git a/src/mongo/s/commands/cluster_is_master_cmd.cpp b/src/mongo/s/commands/cluster_is_master_cmd.cpp index 1b0af958848..a71c0c28ef2 100644 --- a/src/mongo/s/commands/cluster_is_master_cmd.cpp +++ b/src/mongo/s/commands/cluster_is_master_cmd.cpp @@ -147,6 +147,9 @@ public: LOGV2_DEBUG(23871, 3, "Using maxAwaitTimeMS for awaitable isMaster protocol."); + // Awaitable isMaster commands have high latency by design. Ignore them. + opCtx->setShouldIncrementLatencyStats(false); + if (clientTopologyVersion->getProcessId() == mongosTopologyVersion.getProcessId()) { uassert(51761, str::stream() |