summaryrefslogtreecommitdiff
path: root/src/mongo/s/client
diff options
context:
space:
mode:
authorKevin Pulo <kevin.pulo@mongodb.com>2018-07-04 01:05:22 +0000
committerKevin Pulo <kevin.pulo@mongodb.com>2018-07-11 01:45:09 +0000
commit80c7c825a44cf99b17e81f4233445c7ab1927706 (patch)
tree19621b13b541af3d1778c42f6ad46c30de1fb045 /src/mongo/s/client
parentbb9f225e47faacb95ae9e5658313a5ebf56f37bf (diff)
downloadmongo-80c7c825a44cf99b17e81f4233445c7ab1927706.tar.gz
SERVER-34897 add parameter to prohibit mongos retries
Diffstat (limited to 'src/mongo/s/client')
-rw-r--r--src/mongo/s/client/shard_remote.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mongo/s/client/shard_remote.cpp b/src/mongo/s/client/shard_remote.cpp
index 05ab1389190..e6a67f8b83c 100644
--- a/src/mongo/s/client/shard_remote.cpp
+++ b/src/mongo/s/client/shard_remote.cpp
@@ -45,6 +45,7 @@
#include "mongo/db/operation_context.h"
#include "mongo/db/query/query_request.h"
#include "mongo/db/repl/read_concern_args.h"
+#include "mongo/db/server_parameters.h"
#include "mongo/executor/task_executor_pool.h"
#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/rpc/metadata/repl_set_metadata.h"
@@ -69,6 +70,11 @@ namespace {
// response.
const BSONObj kReplMetadata(BSON(rpc::kReplSetMetadataFieldName << 1));
+constexpr bool internalProhibitShardOperationRetryByDefault = false;
+MONGO_EXPORT_SERVER_PARAMETER(internalProhibitShardOperationRetry,
+ bool,
+ internalProhibitShardOperationRetryByDefault);
+
/**
* Returns a new BSONObj describing the same command and arguments as 'cmdObj', but with maxTimeMS
* replaced by maxTimeMSOverride (or removed if maxTimeMSOverride is Milliseconds::max()).
@@ -101,6 +107,10 @@ ShardRemote::ShardRemote(const ShardId& id,
ShardRemote::~ShardRemote() = default;
bool ShardRemote::isRetriableError(ErrorCodes::Error code, RetryPolicy options) {
+ if (internalProhibitShardOperationRetry.loadRelaxed()) {
+ return false;
+ }
+
if (options == RetryPolicy::kNoRetry) {
return false;
}