diff options
Diffstat (limited to 'src/mongo/s/async_requests_sender.cpp')
-rw-r--r-- | src/mongo/s/async_requests_sender.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/mongo/s/async_requests_sender.cpp b/src/mongo/s/async_requests_sender.cpp index 36f91459d29..7cca30f0b99 100644 --- a/src/mongo/s/async_requests_sender.cpp +++ b/src/mongo/s/async_requests_sender.cpp @@ -272,9 +272,9 @@ auto AsyncRequestsSender::RemoteData::handleResponse(RemoteCommandOnAnyCallbackA } shard->updateReplSetMonitor(failedTargets.front(), status); - + bool isStartingTransaction = _cmdObj.getField("startTransaction").booleanSafe(); if (!_ars->_stopRetrying && shard->isRetriableError(status.code(), _ars->_retryPolicy) && - _retryCount < kMaxNumFailedHostRetryAttempts) { + _retryCount < kMaxNumFailedHostRetryAttempts && !isStartingTransaction) { LOGV2_DEBUG(4615637, 1, @@ -284,7 +284,6 @@ auto AsyncRequestsSender::RemoteData::handleResponse(RemoteCommandOnAnyCallbackA "shardId"_attr = _shardId, "hosts"_attr = failedTargets, "error"_attr = redact(status)); - ++_retryCount; _shardHostAndPort.reset(); // retry through recursion |