summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA. Jesse Jiryu Davis <jesse@mongodb.com>2020-06-05 15:13:14 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-06-08 18:02:44 +0000
commit14cb5634011e86800084cc822b2557992cc7222e (patch)
tree5b7cde5ac1e1a0ab90c54e208242a1b17f8429f9
parent39cce3cb6dd9dee5d4941bd83be6df65f69a0cc4 (diff)
downloadmongo-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.h15
-rw-r--r--src/mongo/db/repl/replication_info.cpp3
-rw-r--r--src/mongo/db/stats/top.cpp3
-rw-r--r--src/mongo/s/commands/cluster_is_master_cmd.cpp3
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()