summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator_impl.h
diff options
context:
space:
mode:
authorMaria van Keulen <maria@mongodb.com>2019-02-28 13:38:37 -0500
committerMaria van Keulen <maria@mongodb.com>2019-03-19 19:33:08 -0400
commitd8d3d3ab1cef37bcc6f65182463b83eaf4669e17 (patch)
treed40a098c2b9fcb6b4a09c3b88057cbf7e01a137a /src/mongo/db/repl/replication_coordinator_impl.h
parentf094ef24969b20a4483e0211d82887655cc133e8 (diff)
downloadmongo-d8d3d3ab1cef37bcc6f65182463b83eaf4669e17.tar.gz
SERVER-40080 report last applied and last durable wall clock times
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_impl.h')
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.h37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_impl.h b/src/mongo/db/repl/replication_coordinator_impl.h
index a53b72580c4..59eaa7ac157 100644
--- a/src/mongo/db/repl/replication_coordinator_impl.h
+++ b/src/mongo/db/repl/replication_coordinator_impl.h
@@ -156,18 +156,23 @@ public:
virtual bool shouldRelaxIndexConstraints(OperationContext* opCtx, const NamespaceString& ns);
- virtual void setMyLastAppliedOpTime(const OpTime& opTime);
- virtual void setMyLastDurableOpTime(const OpTime& opTime);
+ virtual void setMyLastAppliedOpTimeAndWallTime(const OpTimeAndWallTime& opTimeAndWallTime);
+ virtual void setMyLastDurableOpTimeAndWallTime(const OpTimeAndWallTime& opTimeAndWallTime);
- virtual void setMyLastAppliedOpTimeForward(const OpTime& opTime, DataConsistency consistency);
- virtual void setMyLastDurableOpTimeForward(const OpTime& opTime);
+ virtual void setMyLastAppliedOpTimeAndWallTimeForward(
+ const OpTimeAndWallTime& opTimeAndWallTime, DataConsistency consistency);
+ virtual void setMyLastDurableOpTimeAndWallTimeForward(
+ const OpTimeAndWallTime& opTimeAndWallTime);
virtual void resetMyLastOpTimes();
virtual void setMyHeartbeatMessage(const std::string& msg);
virtual OpTime getMyLastAppliedOpTime() const override;
+ virtual OpTimeAndWallTime getMyLastAppliedOpTimeAndWallTime() const override;
+
virtual OpTime getMyLastDurableOpTime() const override;
+ virtual OpTimeAndWallTime getMyLastDurableOpTimeAndWallTime() const override;
virtual Status waitUntilOpTimeForReadUntil(OperationContext* opCtx,
const ReadConcernArgs& readConcern,
@@ -757,7 +762,10 @@ private:
int _getMyId_inlock() const;
OpTime _getMyLastAppliedOpTime_inlock() const;
+ OpTimeAndWallTime _getMyLastAppliedOpTimeAndWallTime_inlock() const;
+
OpTime _getMyLastDurableOpTime_inlock() const;
+ OpTimeAndWallTime _getMyLastDurableOpTimeAndWallTime_inlock() const;
/**
* Helper method for updating our tracking of the last optime applied by a given node.
@@ -781,11 +789,13 @@ private:
/**
* Helpers to set the last applied and durable OpTime.
*/
- void _setMyLastAppliedOpTime(WithLock lk,
- const OpTime& opTime,
- bool isRollbackAllowed,
- DataConsistency consistency);
- void _setMyLastDurableOpTime(WithLock lk, const OpTime& opTime, bool isRollbackAllowed);
+ void _setMyLastAppliedOpTimeAndWallTime(WithLock lk,
+ const OpTimeAndWallTime& opTime,
+ bool isRollbackAllowed,
+ DataConsistency consistency);
+ void _setMyLastDurableOpTimeAndWallTime(WithLock lk,
+ const OpTimeAndWallTime& opTimeAndWallTime,
+ bool isRollbackAllowed);
/**
* Schedules a heartbeat to be sent to "target" at "when". "targetIndex" is the index
@@ -865,10 +875,11 @@ private:
* Callback that finishes the work started in _startLoadLocalConfig and sets _rsConfigState
* to kConfigSteady, so that we can begin processing heartbeats and reconfigs.
*/
- void _finishLoadLocalConfig(const executor::TaskExecutor::CallbackArgs& cbData,
- const ReplSetConfig& localConfig,
- const StatusWith<OpTime>& lastOpTimeStatus,
- const StatusWith<LastVote>& lastVoteStatus);
+ void _finishLoadLocalConfig(
+ const executor::TaskExecutor::CallbackArgs& cbData,
+ const ReplSetConfig& localConfig,
+ const StatusWith<std::tuple<OpTime, Date_t>>& lastOpTimeAndWallTimeStatus,
+ const StatusWith<LastVote>& lastVoteStatus);
/**
* Start replicating data, and does an initial sync if needed first.