diff options
author | Maria van Keulen <maria@mongodb.com> | 2019-02-28 13:38:37 -0500 |
---|---|---|
committer | Maria van Keulen <maria@mongodb.com> | 2019-03-19 19:33:08 -0400 |
commit | d8d3d3ab1cef37bcc6f65182463b83eaf4669e17 (patch) | |
tree | d40a098c2b9fcb6b4a09c3b88057cbf7e01a137a /src/mongo/db/repl/initial_syncer.h | |
parent | f094ef24969b20a4483e0211d82887655cc133e8 (diff) | |
download | mongo-d8d3d3ab1cef37bcc6f65182463b83eaf4669e17.tar.gz |
SERVER-40080 report last applied and last durable wall clock times
Diffstat (limited to 'src/mongo/db/repl/initial_syncer.h')
-rw-r--r-- | src/mongo/db/repl/initial_syncer.h | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/mongo/db/repl/initial_syncer.h b/src/mongo/db/repl/initial_syncer.h index 512a2cbd504..d9c13ec9635 100644 --- a/src/mongo/db/repl/initial_syncer.h +++ b/src/mongo/db/repl/initial_syncer.h @@ -85,8 +85,8 @@ struct InitialSyncerOptions { using GetMyLastOptimeFn = stdx::function<OpTime()>; /** Function to update optime of last operation applied on this node */ - using SetMyLastOptimeFn = - stdx::function<void(const OpTime&, ReplicationCoordinator::DataConsistency consistency)>; + using SetMyLastOptimeFn = stdx::function<void( + const OpTimeAndWallTime&, ReplicationCoordinator::DataConsistency consistency)>; /** Function to reset all optimes on this node (e.g. applied & durable). */ using ResetOptimesFn = stdx::function<void()>; @@ -145,12 +145,13 @@ public: /** * Callback function to report last applied optime of initial sync. */ - typedef stdx::function<void(const StatusWith<OpTime>& lastApplied)> OnCompletionFn; + typedef stdx::function<void(const StatusWith<std::tuple<OpTime, Date_t>>& lastApplied)> + OnCompletionFn; /** * Callback completion guard for initial syncer. */ - using OnCompletionGuard = CallbackCompletionGuard<StatusWith<OpTime>>; + using OnCompletionGuard = CallbackCompletionGuard<StatusWith<std::tuple<OpTime, Date_t>>>; using StartCollectionClonerFn = DatabaseCloner::StartCollectionClonerFn; @@ -242,6 +243,12 @@ public: */ State getState_forTest() const; + /** + * Returns the wall clock time component of _lastApplied. + * For testing only. + */ + Date_t getWallClockTime_forTest() const; + private: /** * Returns true if we are still processing initial sync tasks (_state is either Running or @@ -363,7 +370,8 @@ private: /** * Tears down internal state before reporting final status to caller. */ - void _tearDown_inlock(OperationContext* opCtx, const StatusWith<OpTime>& lastApplied); + void _tearDown_inlock(OperationContext* opCtx, + const StatusWith<std::tuple<OpTime, Date_t>>& lastApplied); /** * Callback to start a single initial sync attempt. @@ -464,7 +472,7 @@ private: * Callback for MultiApplier completion. */ void _multiApplierCallback(const Status& status, - OpTime lastApplied, + std::tuple<OpTime, Date_t> lastApplied, std::uint32_t numApplied, std::shared_ptr<OnCompletionGuard> onCompletionGuard); @@ -490,12 +498,12 @@ private: * Reports result of current initial sync attempt. May schedule another initial sync attempt * depending on shutdown state and whether we've exhausted all initial sync retries. */ - void _finishInitialSyncAttempt(const StatusWith<OpTime>& lastApplied); + void _finishInitialSyncAttempt(const StatusWith<std::tuple<OpTime, Date_t>>& lastApplied); /** * Invokes completion callback and transitions state to State::kComplete. */ - void _finishCallback(StatusWith<OpTime> lastApplied); + void _finishCallback(StatusWith<std::tuple<OpTime, Date_t>> lastApplied); // Obtains a valid sync source from the sync source selector. // Returns error if a sync source cannot be found. @@ -642,7 +650,7 @@ private: std::unique_ptr<MultiApplier> _applier; // (M) HostAndPort _syncSource; // (M) OpTime _lastFetched; // (MX) - OpTime _lastApplied; // (MX) + std::tuple<OpTime, Date_t> _lastApplied; // (MX) std::unique_ptr<OplogBuffer> _oplogBuffer; // (M) std::unique_ptr<OplogApplier::Observer> _observer; // (S) std::unique_ptr<OplogApplier> _oplogApplier; // (M) |