summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Wagenmaker <alyssa.wagenmaker@mongodb.com>2023-04-06 21:13:57 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-04-07 01:54:45 +0000
commitf472a15f9781f95dcabc64c6b9b6690aa66f3b33 (patch)
tree8dfde4d4589fb3447c3a2aa805cb52d36afce4ee
parent2a994ea0779acb7f594d2a23e96e6e3affbb8b8b (diff)
downloadmongo-f472a15f9781f95dcabc64c6b9b6690aa66f3b33.tar.gz
SERVER-75182 Allow internalQueryConfigureTelemetrySamplingRate to be -1
-rw-r--r--buildscripts/resmokeconfig/suites/telemetry_passthrough.yml2
-rw-r--r--jstests/noPassthrough/telemetry/application_name_find.js2
-rw-r--r--jstests/noPassthrough/telemetry/clear_telemetry_store.js2
-rw-r--r--jstests/noPassthrough/telemetry/feature_flag_off_sampling_rate_on.js4
-rw-r--r--jstests/noPassthrough/telemetry/redactFieldnames_parameter.js2
-rw-r--r--jstests/noPassthrough/telemetry/redact_queries_with_nonobject_fields.js2
-rw-r--r--jstests/noPassthrough/telemetry/telemetry_collect_on_mongos.js2
-rw-r--r--jstests/noPassthrough/telemetry/telemetry_metrics_across_getMore_calls.js2
-rw-r--r--jstests/noPassthrough/telemetry/telemetry_redact_find_cmd.js4
-rw-r--r--jstests/noPassthrough/telemetry/telemetry_server_status_metrics.js8
-rw-r--r--src/mongo/db/query/query_knobs.idl6
-rw-r--r--src/mongo/db/query/telemetry.cpp8
-rw-r--r--src/mongo/db/query/telemetry_util.cpp2
13 files changed, 24 insertions, 22 deletions
diff --git a/buildscripts/resmokeconfig/suites/telemetry_passthrough.yml b/buildscripts/resmokeconfig/suites/telemetry_passthrough.yml
index 4f7b505299b..1aa2a490a5f 100644
--- a/buildscripts/resmokeconfig/suites/telemetry_passthrough.yml
+++ b/buildscripts/resmokeconfig/suites/telemetry_passthrough.yml
@@ -27,4 +27,4 @@ executor:
mongod_options:
set_parameters:
enableTestCommands: 1
- internalQueryConfigureTelemetrySamplingRate: 2147483647
+ internalQueryConfigureTelemetrySamplingRate: -1
diff --git a/jstests/noPassthrough/telemetry/application_name_find.js b/jstests/noPassthrough/telemetry/application_name_find.js
index c57af6f36f4..13c70e6d70f 100644
--- a/jstests/noPassthrough/telemetry/application_name_find.js
+++ b/jstests/noPassthrough/telemetry/application_name_find.js
@@ -25,7 +25,7 @@ const getTelemetry = (conn, redactIdentifiers = false) => {
// Turn on the collecting of telemetry metrics.
let options = {
- setParameter: {internalQueryConfigureTelemetrySamplingRate: 2147483647},
+ setParameter: {internalQueryConfigureTelemetrySamplingRate: -1},
};
const conn = MongoRunner.runMongod(options);
diff --git a/jstests/noPassthrough/telemetry/clear_telemetry_store.js b/jstests/noPassthrough/telemetry/clear_telemetry_store.js
index 3682b16ce66..b2409cc0bbb 100644
--- a/jstests/noPassthrough/telemetry/clear_telemetry_store.js
+++ b/jstests/noPassthrough/telemetry/clear_telemetry_store.js
@@ -10,7 +10,7 @@ load("jstests/libs/telemetry_utils.js"); // For verifyMetrics.
// Turn on the collecting of telemetry metrics.
let options = {
setParameter: {
- internalQueryConfigureTelemetrySamplingRate: 2147483647,
+ internalQueryConfigureTelemetrySamplingRate: -1,
internalQueryConfigureTelemetryCacheSize: "10MB"
},
};
diff --git a/jstests/noPassthrough/telemetry/feature_flag_off_sampling_rate_on.js b/jstests/noPassthrough/telemetry/feature_flag_off_sampling_rate_on.js
index a4efc5417d3..8dee55a109b 100644
--- a/jstests/noPassthrough/telemetry/feature_flag_off_sampling_rate_on.js
+++ b/jstests/noPassthrough/telemetry/feature_flag_off_sampling_rate_on.js
@@ -8,9 +8,9 @@ load("jstests/libs/feature_flag_util.js");
(function() {
"use strict";
-// Set sampling rate to MAX_INT.
+// Set sampling rate to -1.
let options = {
- setParameter: {internalQueryConfigureTelemetrySamplingRate: 2147483647},
+ setParameter: {internalQueryConfigureTelemetrySamplingRate: -1},
};
const conn = MongoRunner.runMongod(options);
const testdb = conn.getDB('test');
diff --git a/jstests/noPassthrough/telemetry/redactFieldnames_parameter.js b/jstests/noPassthrough/telemetry/redactFieldnames_parameter.js
index 27a80522cf5..ca2a9aa348d 100644
--- a/jstests/noPassthrough/telemetry/redactFieldnames_parameter.js
+++ b/jstests/noPassthrough/telemetry/redactFieldnames_parameter.js
@@ -10,7 +10,7 @@ load("jstests/aggregation/extras/utils.js"); // For assertAdminDBErrCodeAndErrM
// Turn on the collecting of telemetry metrics.
let options = {
- setParameter: {internalQueryConfigureTelemetrySamplingRate: 2147483647},
+ setParameter: {internalQueryConfigureTelemetrySamplingRate: -1},
};
const conn = MongoRunner.runMongod(options);
diff --git a/jstests/noPassthrough/telemetry/redact_queries_with_nonobject_fields.js b/jstests/noPassthrough/telemetry/redact_queries_with_nonobject_fields.js
index 9ef3cabbb54..25cac47555e 100644
--- a/jstests/noPassthrough/telemetry/redact_queries_with_nonobject_fields.js
+++ b/jstests/noPassthrough/telemetry/redact_queries_with_nonobject_fields.js
@@ -9,7 +9,7 @@ load('jstests/libs/analyze_plan.js');
// Turn on the collecting of telemetry metrics.
let options = {
- setParameter: {internalQueryConfigureTelemetrySamplingRate: 2147483647},
+ setParameter: {internalQueryConfigureTelemetrySamplingRate: -1},
};
const conn = MongoRunner.runMongod(options);
diff --git a/jstests/noPassthrough/telemetry/telemetry_collect_on_mongos.js b/jstests/noPassthrough/telemetry/telemetry_collect_on_mongos.js
index 06113315450..5882ab529f0 100644
--- a/jstests/noPassthrough/telemetry/telemetry_collect_on_mongos.js
+++ b/jstests/noPassthrough/telemetry/telemetry_collect_on_mongos.js
@@ -20,7 +20,7 @@ const setup = () => {
rs: {nodes: 1},
mongosOptions: {
setParameter: {
- internalQueryConfigureTelemetrySamplingRate: 2147483647,
+ internalQueryConfigureTelemetrySamplingRate: -1,
'failpoint.skipClusterParameterRefresh': "{'mode':'alwaysOn'}"
}
},
diff --git a/jstests/noPassthrough/telemetry/telemetry_metrics_across_getMore_calls.js b/jstests/noPassthrough/telemetry/telemetry_metrics_across_getMore_calls.js
index acfd6048ee2..87fc54a3360 100644
--- a/jstests/noPassthrough/telemetry/telemetry_metrics_across_getMore_calls.js
+++ b/jstests/noPassthrough/telemetry/telemetry_metrics_across_getMore_calls.js
@@ -10,7 +10,7 @@ load("jstests/libs/telemetry_utils.js"); // For verifyMetrics.
// Turn on the collecting of telemetry metrics.
let options = {
- setParameter: {internalQueryConfigureTelemetrySamplingRate: 2147483647},
+ setParameter: {internalQueryConfigureTelemetrySamplingRate: -1},
};
const conn = MongoRunner.runMongod(options);
diff --git a/jstests/noPassthrough/telemetry/telemetry_redact_find_cmd.js b/jstests/noPassthrough/telemetry/telemetry_redact_find_cmd.js
index c9bc95b410d..6bbf55f08ea 100644
--- a/jstests/noPassthrough/telemetry/telemetry_redact_find_cmd.js
+++ b/jstests/noPassthrough/telemetry/telemetry_redact_find_cmd.js
@@ -40,7 +40,7 @@ function runTest(conn) {
const conn = MongoRunner.runMongod({
setParameter: {
- internalQueryConfigureTelemetrySamplingRate: 2147483647,
+ internalQueryConfigureTelemetrySamplingRate: -1,
featureFlagTelemetry: true,
}
});
@@ -54,7 +54,7 @@ const st = new ShardingTest({
rs: {nodes: 1},
mongosOptions: {
setParameter: {
- internalQueryConfigureTelemetrySamplingRate: 2147483647,
+ internalQueryConfigureTelemetrySamplingRate: -1,
featureFlagTelemetry: true,
'failpoint.skipClusterParameterRefresh': "{'mode':'alwaysOn'}"
}
diff --git a/jstests/noPassthrough/telemetry/telemetry_server_status_metrics.js b/jstests/noPassthrough/telemetry/telemetry_server_status_metrics.js
index 194fb15d0a6..84ac1717d69 100644
--- a/jstests/noPassthrough/telemetry/telemetry_server_status_metrics.js
+++ b/jstests/noPassthrough/telemetry/telemetry_server_status_metrics.js
@@ -108,7 +108,7 @@ function telemetryStoreSizeEstimateTest(conn, testDB, coll, testOptions) {
runTestWithMongodOptions({
setParameter: {
internalQueryConfigureTelemetryCacheSize: "1MB",
- internalQueryConfigureTelemetrySamplingRate: 2147483647
+ internalQueryConfigureTelemetrySamplingRate: -1
},
},
evictionTest,
@@ -119,7 +119,7 @@ runTestWithMongodOptions({
runTestWithMongodOptions({
setParameter: {
internalQueryConfigureTelemetryCacheSize: "4MB",
- internalQueryConfigureTelemetrySamplingRate: 2147483647
+ internalQueryConfigureTelemetrySamplingRate: -1
},
},
evictionTest,
@@ -129,7 +129,7 @@ runTestWithMongodOptions({
* In this configuration, every query is sampled, so no requests should be rate-limited.
*/
runTestWithMongodOptions({
- setParameter: {internalQueryConfigureTelemetrySamplingRate: 2147483647},
+ setParameter: {internalQueryConfigureTelemetrySamplingRate: -1},
},
countRateLimitedRequestsTest,
{samplingRate: 2147483647, numRequests: 20});
@@ -149,7 +149,7 @@ runTestWithMongodOptions({
* size
*/
runTestWithMongodOptions({
- setParameter: {internalQueryConfigureTelemetrySamplingRate: 2147483647},
+ setParameter: {internalQueryConfigureTelemetrySamplingRate: -1},
},
telemetryStoreSizeEstimateTest);
}());
diff --git a/src/mongo/db/query/query_knobs.idl b/src/mongo/db/query/query_knobs.idl
index e7359acbb14..070a2c56629 100644
--- a/src/mongo/db/query/query_knobs.idl
+++ b/src/mongo/db/query/query_knobs.idl
@@ -1020,14 +1020,14 @@ server_parameters:
internalQueryConfigureTelemetrySamplingRate:
description: "The maximum number of queries per second that are sampled for query telemetry.
If the rate of queries goes above this number, then rate limiting will kick in, and any
- further queries will not be sampled. To sample all queries, this can be set to the INT_MAX.
- This can be set to 0 to turn telemetry off completely."
+ further queries will not be sampled. To sample all queries, this can be set to -1. This can be
+ set to 0 to turn telemetry off completely."
set_at: [ startup, runtime ]
cpp_varname: "queryTelemetrySamplingRate"
cpp_vartype: AtomicWord<int>
default: 0
validator:
- gte: 0
+ gte: -1
on_update: telemetry_util::onTelemetrySamplingRateUpdate
internalQueryConfigureTelemetryCacheSize:
diff --git a/src/mongo/db/query/telemetry.cpp b/src/mongo/db/query/telemetry.cpp
index 2a3d1714176..1e39a3f910f 100644
--- a/src/mongo/db/query/telemetry.cpp
+++ b/src/mongo/db/query/telemetry.cpp
@@ -468,8 +468,9 @@ ServiceContext::ConstructorActionRegisterer telemetryStoreManagerRegisterer{
}
}
globalTelemetryStoreManager = std::make_unique<TelemetryStoreManager>(size, numPartitions);
- telemetryRateLimiter(serviceCtx) =
- std::make_unique<RateLimiting>(queryTelemetrySamplingRate.load());
+ auto configuredSamplingRate = queryTelemetrySamplingRate.load();
+ telemetryRateLimiter(serviceCtx) = std::make_unique<RateLimiting>(
+ configuredSamplingRate < 0 ? INT_MAX : configuredSamplingRate);
}};
/**
@@ -500,7 +501,8 @@ bool shouldCollect(const ServiceContext* serviceCtx) {
return false;
}
// Check if rate limiting allows us to collect telemetry for this request.
- if (!telemetryRateLimiter(serviceCtx)->handleRequestSlidingWindow()) {
+ if (telemetryRateLimiter(serviceCtx)->getSamplingRate() < INT_MAX &&
+ !telemetryRateLimiter(serviceCtx)->handleRequestSlidingWindow()) {
telemetryRateLimitedRequestsMetric.increment();
return false;
}
diff --git a/src/mongo/db/query/telemetry_util.cpp b/src/mongo/db/query/telemetry_util.cpp
index f3918d7212a..eeaf7da71e6 100644
--- a/src/mongo/db/query/telemetry_util.cpp
+++ b/src/mongo/db/query/telemetry_util.cpp
@@ -85,7 +85,7 @@ Status onTelemetrySamplingRateUpdate(int samplingRate) {
// context.
if (auto client = Client::getCurrent()) {
auto&& [serviceCtx, updater] = getUpdater(*client);
- updater->updateSamplingRate(serviceCtx, samplingRate);
+ updater->updateSamplingRate(serviceCtx, samplingRate < 0 ? INT_MAX : samplingRate);
}
return Status::OK();