summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/data_replicator_external_state_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/data_replicator_external_state_impl.cpp')
-rw-r--r--src/mongo/db/repl/data_replicator_external_state_impl.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mongo/db/repl/data_replicator_external_state_impl.cpp b/src/mongo/db/repl/data_replicator_external_state_impl.cpp
index 2621917a862..00c924ff1ea 100644
--- a/src/mongo/db/repl/data_replicator_external_state_impl.cpp
+++ b/src/mongo/db/repl/data_replicator_external_state_impl.cpp
@@ -100,7 +100,7 @@ ChangeSyncSourceAction DataReplicatorExternalStateImpl::shouldStopFetching(
const rpc::ReplSetMetadata& replMetadata,
const rpc::OplogQueryMetadata& oqMetadata,
const OpTime& previousOpTimeFetched,
- const OpTime& lastOpTimeFetched) {
+ const OpTime& lastOpTimeFetched) const {
// Re-evaluate quality of sync target.
auto changeSyncSourceAction = _replicationCoordinator->shouldChangeSyncSource(
source, replMetadata, oqMetadata, previousOpTimeFetched, lastOpTimeFetched);
@@ -118,6 +118,18 @@ ChangeSyncSourceAction DataReplicatorExternalStateImpl::shouldStopFetching(
return changeSyncSourceAction;
}
+ChangeSyncSourceAction DataReplicatorExternalStateImpl::shouldStopFetchingOnError(
+ const HostAndPort& source, const OpTime& lastOpTimeFetched) const {
+ auto changeSyncSourceAction =
+ _replicationCoordinator->shouldChangeSyncSourceOnError(source, lastOpTimeFetched);
+ if (changeSyncSourceAction != ChangeSyncSourceAction::kContinueSyncing) {
+ LOGV2(6341701,
+ "Canceling oplog query on fetch error. We have to choose a new sync source",
+ "syncSource"_attr = source);
+ }
+ return changeSyncSourceAction;
+}
+
std::unique_ptr<OplogBuffer> DataReplicatorExternalStateImpl::makeInitialSyncOplogBuffer(
OperationContext* opCtx) const {
if (initialSyncOplogBuffer == kCollectionOplogBufferName) {