summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/database_cloner.cpp
diff options
context:
space:
mode:
authorScott Hernandez <scotthernandez@tart.local>2016-06-10 17:17:25 -0400
committerScott Hernandez <scotthernandez@gmail.com>2016-07-06 14:16:01 -0400
commiteba32f352cffd1dbe8ca451bde5944b997bfebf5 (patch)
tree92cd47a635d466fb9d12138be09fb3726e59c46c /src/mongo/db/repl/database_cloner.cpp
parenta9dd99324292e3e7a6ea96258c75f82a74a24d9b (diff)
downloadmongo-eba32f352cffd1dbe8ca451bde5944b997bfebf5.tar.gz
SERVER-23750: Add retries for metadata command during initial sync
Diffstat (limited to 'src/mongo/db/repl/database_cloner.cpp')
-rw-r--r--src/mongo/db/repl/database_cloner.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mongo/db/repl/database_cloner.cpp b/src/mongo/db/repl/database_cloner.cpp
index 25e74a383c4..89c5d7b3da6 100644
--- a/src/mongo/db/repl/database_cloner.cpp
+++ b/src/mongo/db/repl/database_cloner.cpp
@@ -36,6 +36,7 @@
#include <iterator>
#include <set>
+#include "mongo/client/remote_command_retry_scheduler.h"
#include "mongo/db/catalog/collection_options.h"
#include "mongo/db/repl/storage_interface.h"
#include "mongo/rpc/metadata/server_selection_metadata.h"
@@ -56,6 +57,9 @@ using UniqueLock = stdx::unique_lock<stdx::mutex>;
const char* kNameFieldName = "name";
const char* kOptionsFieldName = "options";
+// The number of retries for the listCollections commands.
+const int numListCollectionsRetries = 1;
+
/**
* Default listCollections predicate.
*/
@@ -102,7 +106,12 @@ DatabaseCloner::DatabaseCloner(ReplicationExecutor* executor,
stdx::placeholders::_1,
stdx::placeholders::_2,
stdx::placeholders::_3),
- rpc::ServerSelectionMetadata(true, boost::none).toBSON()),
+ rpc::ServerSelectionMetadata(true, boost::none).toBSON(),
+ RemoteCommandRequest::kNoTimeout,
+ RemoteCommandRetryScheduler::makeRetryPolicy(
+ numListCollectionsRetries,
+ executor::RemoteCommandRequest::kNoTimeout,
+ RemoteCommandRetryScheduler::kAllRetriableErrors)),
_scheduleDbWorkFn([this](const ReplicationExecutor::CallbackFn& work) {
return _executor->scheduleDBWork(work);
}),