diff options
author | Scott Hernandez <scotthernandez@tart.local> | 2016-06-10 17:17:25 -0400 |
---|---|---|
committer | Scott Hernandez <scotthernandez@gmail.com> | 2016-07-06 14:16:01 -0400 |
commit | eba32f352cffd1dbe8ca451bde5944b997bfebf5 (patch) | |
tree | 92cd47a635d466fb9d12138be09fb3726e59c46c /src/mongo/db/repl/database_cloner.cpp | |
parent | a9dd99324292e3e7a6ea96258c75f82a74a24d9b (diff) | |
download | mongo-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.cpp | 11 |
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); }), |