summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Chan <jason.chan@mongodb.com>2022-12-06 15:20:31 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-12-09 17:14:31 +0000
commitd8c83636e6cc4a3157f7cb079222f150689698de (patch)
treed0f5daca84e252f601c1699a2af3a9f88262556c
parentbe31f3772cd25cd1edfb90bbf37ac8cdb8c55440 (diff)
downloadmongo-d8c83636e6cc4a3157f7cb079222f150689698de.tar.gz
SERVER-71685 Remove sampling of connAcquisitionToWire metrics
(cherry picked from commit 8cefa36fddf8cad897d669a565038cd0ae0c83a2)
-rw-r--r--jstests/sharding/egress_connection_acquisition_to_wire_metrics.js29
-rw-r--r--src/mongo/client/SConscript1
-rw-r--r--src/mongo/client/async_client.cpp16
-rw-r--r--src/mongo/client/async_client.h8
4 files changed, 21 insertions, 33 deletions
diff --git a/jstests/sharding/egress_connection_acquisition_to_wire_metrics.js b/jstests/sharding/egress_connection_acquisition_to_wire_metrics.js
index 831305ee000..ba8bbee1aca 100644
--- a/jstests/sharding/egress_connection_acquisition_to_wire_metrics.js
+++ b/jstests/sharding/egress_connection_acquisition_to_wire_metrics.js
@@ -16,13 +16,17 @@ function getConnAcquiredToWireMicros(conn) {
.metrics.network.totalTimeForEgressConnectionAcquiredToWireMicros;
}
-// Set it so that we log the intended metrics only on the mongos.
-const paramsDoc = {
- mongosOptions: {setParameter: {connectionAcquisitionToWireLoggingRate: 1.0}},
- shardOptions: {setParameter: {connectionAcquisitionToWireLoggingRate: 0.0}},
- configOptions: {setParameter: {connectionAcquisitionToWireLoggingRate: 0.0}},
+const setParamOptions = {
+ "failpoint.alwaysLogConnAcquisitionToWireTime": tojson({mode: "alwaysOn"}),
+ logComponentVerbosity: tojson({network: {verbosity: 2}})
};
-const st = new ShardingTest({shards: 1, mongos: 1, other: paramsDoc});
+
+const st = new ShardingTest({
+ shards: 1,
+ rs: {nodes: 1, setParameter: setParamOptions},
+ mongos: 1,
+ mongosOptions: {setParameter: setParamOptions}
+});
let initialConnAcquiredToWireTime = getConnAcquiredToWireMicros(st.s);
jsTestLog(`Initial metric value for mongos totalTimeForEgressConnectionAcquiredToWireMicros: ${
tojson(initialConnAcquiredToWireTime)}`);
@@ -39,22 +43,9 @@ assert.gt(afterConnAcquiredToWireTime,
initialConnAcquiredToWireTime,
st.s.adminCommand({serverStatus: 1}));
-// Test that setting the logging rate to 0 results in silencing of the logs.
-st.s.adminCommand({setParameter: 1, connectionAcquisitionToWireLoggingRate: 0.0});
-assert.commandWorked(st.s.adminCommand({clearLog: 'global'}));
-assert.commandWorked(st.s.getDB(jsTestName())["test"].insert({x: 2}));
-try {
- checkLog.containsJson(st.s, 6496702, null, 5 * 1000);
- assert(false);
-} catch (e) {
- jsTestLog("Waited long enough to believe logs were correctly silenced.");
-}
-
// Test with mirrored reads to execute the 'fireAndForget' path and verify logs are still correctly
// printed.
const shardPrimary = st.rs0.getPrimary();
-assert.commandWorked(
- shardPrimary.adminCommand({setParameter: 1, connectionAcquisitionToWireLoggingRate: 1.0}));
assert.commandWorked(shardPrimary.adminCommand({clearLog: 'global'}));
initialConnAcquiredToWireTime = getConnAcquiredToWireMicros(shardPrimary);
jsTestLog(`Initial metric value for mongod totalTimeForEgressConnectionAcquiredToWireMicros: ${
diff --git a/src/mongo/client/SConscript b/src/mongo/client/SConscript
index deae2e6f0aa..857482505a7 100644
--- a/src/mongo/client/SConscript
+++ b/src/mongo/client/SConscript
@@ -255,7 +255,6 @@ env.Library(
target='async_client',
source=[
'async_client.cpp',
- env.Idlc('async_client.idl')[0],
],
LIBDEPS=[
'$BUILD_DIR/mongo/db/wire_version',
diff --git a/src/mongo/client/async_client.cpp b/src/mongo/client/async_client.cpp
index 48368e139ee..95597cdfcaa 100644
--- a/src/mongo/client/async_client.cpp
+++ b/src/mongo/client/async_client.cpp
@@ -35,7 +35,6 @@
#include <memory>
#include "mongo/bson/bsonobjbuilder.h"
-#include "mongo/client/async_client_gen.h"
#include "mongo/client/authenticate.h"
#include "mongo/client/sasl_client_authenticate.h"
#include "mongo/config.h"
@@ -63,6 +62,7 @@
namespace mongo {
MONGO_FAIL_POINT_DEFINE(pauseBeforeMarkKeepOpen);
+MONGO_FAIL_POINT_DEFINE(alwaysLogConnAcquisitionToWireTime)
namespace {
bool connHealthMetricsEnabled() {
@@ -316,14 +316,14 @@ Future<rpc::UniqueReply> AsyncDBClient::runCommand(
durationCount<Microseconds>(fromConnAcquiredTimer.get()->elapsed());
totalTimeForEgressConnectionAcquiredToWireMicros.increment(timeElapsedMicros);
if (timeElapsedMicros >= 1000 ||
- _random.nextCanonicalDouble() <= gConnectionAcquisitionToWireLoggingRate.load()) {
- LOGV2_INFO(6496702,
- "Acquired connection for remote operation and completed writing to wire",
- "durationMicros"_attr = timeElapsedMicros);
- } else {
+ MONGO_unlikely(alwaysLogConnAcquisitionToWireTime.shouldFail())) {
+ // Log slow acquisition times at info level but rate limit it to prevent spamming
+ // users.
+ static auto& logSeverity = *new logv2::SeveritySuppressor{
+ Seconds{1}, logv2::LogSeverity::Info(), logv2::LogSeverity::Debug(2)};
LOGV2_DEBUG(
- 6496701,
- 2,
+ 6496702,
+ logSeverity().toInt(),
"Acquired connection for remote operation and completed writing to wire",
"durationMicros"_attr = timeElapsedMicros);
}
diff --git a/src/mongo/client/async_client.h b/src/mongo/client/async_client.h
index bef816727ac..cf589e07ad3 100644
--- a/src/mongo/client/async_client.h
+++ b/src/mongo/client/async_client.h
@@ -37,6 +37,7 @@
#include "mongo/executor/network_connection_hook.h"
#include "mongo/executor/remote_command_request.h"
#include "mongo/executor/remote_command_response.h"
+#include "mongo/logv2/log_severity_suppressor.h"
#include "mongo/rpc/unique_message.h"
#include "mongo/transport/baton.h"
#include "mongo/transport/message_compressor_manager.h"
@@ -51,10 +52,7 @@ public:
explicit AsyncDBClient(const HostAndPort& peer,
transport::SessionHandle session,
ServiceContext* svcCtx)
- : _peer(std::move(peer)),
- _session(std::move(session)),
- _svcCtx(svcCtx),
- _random{PseudoRandom(SecureRandom().nextInt64())} {}
+ : _peer(std::move(peer)), _session(std::move(session)), _svcCtx(svcCtx) {}
using Handle = std::shared_ptr<AsyncDBClient>;
@@ -104,6 +102,7 @@ public:
const HostAndPort& remote() const;
const HostAndPort& local() const;
+ static constexpr Seconds kSlowConnAcquiredToWireLogSuppresionPeriod{5};
private:
Future<executor::RemoteCommandResponse> _continueReceiveExhaustResponse(
@@ -123,7 +122,6 @@ private:
transport::SessionHandle _session;
ServiceContext* const _svcCtx;
MessageCompressorManager _compressorManager;
- PseudoRandom _random;
};
} // namespace mongo