summaryrefslogtreecommitdiff
path: root/src/mongo/executor
diff options
context:
space:
mode:
authorVojislav Stojkovic <vojislav.stojkovic@mongodb.com>2022-05-05 05:41:22 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-05-05 07:05:25 +0000
commite6547d5561be2e0fe51f5f7a317a094732f77c2c (patch)
treed5687ad5233198162eced951631a52a360118a12 /src/mongo/executor
parent489307691e3029900580db9cb54f707bb59e5172 (diff)
downloadmongo-e6547d5561be2e0fe51f5f7a317a094732f77c2c.tar.gz
SERVER-65131 Disable opportunistic read targeting
Diffstat (limited to 'src/mongo/executor')
-rw-r--r--src/mongo/executor/network_interface_tl.cpp5
-rw-r--r--src/mongo/executor/network_interface_tl.idl9
2 files changed, 14 insertions, 0 deletions
diff --git a/src/mongo/executor/network_interface_tl.cpp b/src/mongo/executor/network_interface_tl.cpp
index 34dea94ee5c..8e14bd1a849 100644
--- a/src/mongo/executor/network_interface_tl.cpp
+++ b/src/mongo/executor/network_interface_tl.cpp
@@ -569,6 +569,11 @@ Status NetworkInterfaceTL::startCommand(const TaskExecutor::CallbackHandle& cbHa
});
}
+ if ((request.target.size() > 1) && !request.hedgeOptions &&
+ !gOpportunisticSecondaryTargeting.load()) {
+ request.target.resize(1);
+ }
+
auto [cmdState, future] = CommandState::make(this, request, cbHandle);
if (cmdState->requestOnAny.timeout != cmdState->requestOnAny.kNoTimeout) {
cmdState->deadline = cmdState->stopwatch.start() + cmdState->requestOnAny.timeout;
diff --git a/src/mongo/executor/network_interface_tl.idl b/src/mongo/executor/network_interface_tl.idl
index b71850511f4..b6d7d2088ac 100644
--- a/src/mongo/executor/network_interface_tl.idl
+++ b/src/mongo/executor/network_interface_tl.idl
@@ -34,3 +34,12 @@ feature_flags:
description: Suppress network interface transport layer exceptions
cpp_varname: gSuppressNetworkInterfaceTransportLayerExceptions
default: false
+
+server_parameters:
+ opportunisticSecondaryTargeting:
+ description: >-
+ Allows attempting to establish connections to multiple secondaries and directing the request
+ to the first secondary that accepts the connection.
+ set_at: [ startup, runtime ]
+ cpp_vartype: AtomicWord<bool>
+ cpp_varname: gOpportunisticSecondaryTargeting