diff options
author | Judah Schvimer <judah@mongodb.com> | 2016-10-19 17:57:31 -0400 |
---|---|---|
committer | Judah Schvimer <judah@mongodb.com> | 2016-10-19 17:57:31 -0400 |
commit | 129c1f22e71249e96f19717d315161f857e471ad (patch) | |
tree | f93241059924468ff589bf9746de72eea8a81f57 /src/mongo/db/repl/replication_coordinator_external_state_impl.h | |
parent | 68937f06d1bb86dced01291835a1678f563a3f64 (diff) | |
download | mongo-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.h | 13 |
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; }; |