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.cpp19
1 files changed, 10 insertions, 9 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 385883939fd..6849dd52418 100644
--- a/src/mongo/db/repl/data_replicator_external_state_impl.cpp
+++ b/src/mongo/db/repl/data_replicator_external_state_impl.cpp
@@ -91,13 +91,16 @@ void DataReplicatorExternalStateImpl::processMetadata(const rpc::ReplSetMetadata
}
}
-bool DataReplicatorExternalStateImpl::shouldStopFetching(const HostAndPort& source,
- const rpc::ReplSetMetadata& replMetadata,
- const rpc::OplogQueryMetadata& oqMetadata,
- const OpTime& lastOpTimeFetched) {
+ChangeSyncSourceAction DataReplicatorExternalStateImpl::shouldStopFetching(
+ const HostAndPort& source,
+ const rpc::ReplSetMetadata& replMetadata,
+ const rpc::OplogQueryMetadata& oqMetadata,
+ const OpTime& previousOpTimeFetched,
+ const OpTime& lastOpTimeFetched) {
// Re-evaluate quality of sync target.
- if (_replicationCoordinator->shouldChangeSyncSource(
- source, replMetadata, oqMetadata, lastOpTimeFetched)) {
+ auto changeSyncSourceAction = _replicationCoordinator->shouldChangeSyncSource(
+ source, replMetadata, oqMetadata, previousOpTimeFetched, lastOpTimeFetched);
+ if (changeSyncSourceAction != ChangeSyncSourceAction::kContinueSyncing) {
LOGV2(21150,
"Canceling oplog query due to OplogQueryMetadata. We have to choose a new "
"sync source. Current source: {syncSource}, OpTime {lastAppliedOpTime}, "
@@ -107,10 +110,8 @@ bool DataReplicatorExternalStateImpl::shouldStopFetching(const HostAndPort& sour
"syncSource"_attr = source,
"lastAppliedOpTime"_attr = oqMetadata.getLastOpApplied(),
"syncSourceIndex"_attr = oqMetadata.getSyncSourceIndex());
-
- return true;
}
- return false;
+ return changeSyncSourceAction;
}
std::unique_ptr<OplogBuffer> DataReplicatorExternalStateImpl::makeInitialSyncOplogBuffer(