summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator_external_state_impl.h
diff options
context:
space:
mode:
authorJudah Schvimer <judah@mongodb.com>2016-10-19 17:57:31 -0400
committerJudah Schvimer <judah@mongodb.com>2016-10-19 17:57:31 -0400
commit129c1f22e71249e96f19717d315161f857e471ad (patch)
treef93241059924468ff589bf9746de72eea8a81f57 /src/mongo/db/repl/replication_coordinator_external_state_impl.h
parent68937f06d1bb86dced01291835a1678f563a3f64 (diff)
downloadmongo-129c1f22e71249e96f19717d315161f857e471ad.tar.gz
SERVER-26572 Reset stopTimestamp in DataReplicator when initial sync apply phase tries to fetch a remote document
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_external_state_impl.h')
-rw-r--r--src/mongo/db/repl/replication_coordinator_external_state_impl.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_external_state_impl.h b/src/mongo/db/repl/replication_coordinator_external_state_impl.h
index 00f1ff0921a..4039dc16db2 100644
--- a/src/mongo/db/repl/replication_coordinator_external_state_impl.h
+++ b/src/mongo/db/repl/replication_coordinator_external_state_impl.h
@@ -36,6 +36,7 @@
#include "mongo/db/repl/replication_coordinator_external_state.h"
#include "mongo/db/repl/rs_sync.h"
#include "mongo/db/repl/sync_source_feedback.h"
+#include "mongo/db/repl/sync_tail.h"
#include "mongo/db/repl/task_runner.h"
#include "mongo/db/storage/journal_listener.h"
#include "mongo/db/storage/snapshot_manager.h"
@@ -105,8 +106,9 @@ public:
MultiApplier::Operations ops,
MultiApplier::ApplyOperationFn applyOperation) override;
virtual Status multiSyncApply(MultiApplier::OperationPtrs* ops) override;
- virtual Status multiInitialSyncApply(MultiApplier::OperationPtrs* ops,
- const HostAndPort& source) override;
+ virtual Status multiInitialSyncApply(MultiApplier::OperationPtrs* ops) override;
+ virtual void resetSyncSourceHostAndFetchCount(const HostAndPort& source) override;
+ virtual unsigned getApplierFetchCount() const override;
virtual std::unique_ptr<OplogBuffer> makeInitialSyncOplogBuffer(
OperationContext* txn) const override;
virtual std::unique_ptr<OplogBuffer> makeSteadyStateOplogBuffer(
@@ -192,6 +194,13 @@ private:
// Used by repl::multiApply() to apply the sync source's operations in parallel.
std::unique_ptr<OldThreadPool> _writerPool;
+ // Used by repl::multiInitialSyncApply() to apply the sync source's operations.
+ // repl::multiInitialSyncApply uses SyncTail::shouldRetry() (and implicitly getMissingDoc())
+ // to fetch missing documents during initial sync. Therefore, it is fine to construct SyncTail
+ // with invalid BackgroundSync, MultiSyncApplyFunc and writerPool arguments because we will not
+ // be accessing any SyncTail functionality that require these constructor parameters.
+ SyncTail _syncTail;
+
// Writes a noop every 10 seconds.
std::unique_ptr<NoopWriter> _noopWriter;
};