diff options
Diffstat (limited to 'src/mongo/db')
-rw-r--r-- | src/mongo/db/repl/SConscript | 1 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_external_state_impl.cpp | 4 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_metrics.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_metrics.h | 1 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_metrics.idl | 4 |
5 files changed, 16 insertions, 0 deletions
diff --git a/src/mongo/db/repl/SConscript b/src/mongo/db/repl/SConscript index 69086a7319f..5074ce190ec 100644 --- a/src/mongo/db/repl/SConscript +++ b/src/mongo/db/repl/SConscript @@ -1154,6 +1154,7 @@ env.Library( '$BUILD_DIR/mongo/db/op_observer', '$BUILD_DIR/mongo/db/query_exec', '$BUILD_DIR/mongo/db/repl/oplog_buffer_proxy', + '$BUILD_DIR/mongo/db/repl/replication_metrics', '$BUILD_DIR/mongo/db/s/balancer', '$BUILD_DIR/mongo/db/s/sharding_runtime_d', '$BUILD_DIR/mongo/db/service_context', diff --git a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp index 65cb2744ec4..321cd206798 100644 --- a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp +++ b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp @@ -71,6 +71,7 @@ #include "mongo/db/repl/repl_server_parameters_gen.h" #include "mongo/db/repl/repl_settings.h" #include "mongo/db/repl/replication_coordinator.h" +#include "mongo/db/repl/replication_metrics.h" #include "mongo/db/repl/replication_process.h" #include "mongo/db/repl/storage_interface.h" #include "mongo/db/s/balancer/balancer.h" @@ -465,6 +466,9 @@ OpTime ReplicationCoordinatorExternalStateImpl::onTransitionToPrimary(OperationC fassert(28665, loadLastOpTimeAndWallTimeResult); auto opTimeToReturn = loadLastOpTimeAndWallTimeResult.getValue().opTime; + auto newTermStartDate = loadLastOpTimeAndWallTimeResult.getValue().wallTime; + ReplicationMetrics::get(opCtx).setNewTermStartDate(newTermStartDate); + _shardingOnTransitionToPrimaryHook(opCtx); _dropAllTempCollections(opCtx); diff --git a/src/mongo/db/repl/replication_metrics.cpp b/src/mongo/db/repl/replication_metrics.cpp index af4fab849b5..6603158c483 100644 --- a/src/mongo/db/repl/replication_metrics.cpp +++ b/src/mongo/db/repl/replication_metrics.cpp @@ -273,6 +273,11 @@ void ReplicationMetrics::setTargetCatchupOpTime(OpTime opTime) { _electionCandidateMetrics.setTargetCatchupOpTime(opTime); } +void ReplicationMetrics::setNewTermStartDate(Date_t newTermStartDate) { + stdx::lock_guard<stdx::mutex> lk(_mutex); + _electionCandidateMetrics.setNewTermStartDate(newTermStartDate); +} + boost::optional<OpTime> ReplicationMetrics::getTargetCatchupOpTime_forTesting() { stdx::lock_guard<stdx::mutex> lk(_mutex); return _electionCandidateMetrics.getTargetCatchupOpTime(); @@ -294,6 +299,7 @@ BSONObj ReplicationMetrics::getElectionCandidateMetricsBSON() { void ReplicationMetrics::clearElectionCandidateMetrics() { stdx::lock_guard<stdx::mutex> lk(_mutex); _electionCandidateMetrics.setTargetCatchupOpTime(boost::none); + _electionCandidateMetrics.setNewTermStartDate(boost::none); _nodeIsCandidateOrPrimary = false; } diff --git a/src/mongo/db/repl/replication_metrics.h b/src/mongo/db/repl/replication_metrics.h index 790036be571..8781c51f6a3 100644 --- a/src/mongo/db/repl/replication_metrics.h +++ b/src/mongo/db/repl/replication_metrics.h @@ -83,6 +83,7 @@ public: // consistent state. void setElectionCandidateMetrics(Date_t lastElectionDate); void setTargetCatchupOpTime(OpTime opTime); + void setNewTermStartDate(Date_t newTermStartDate); boost::optional<OpTime> getTargetCatchupOpTime_forTesting(); diff --git a/src/mongo/db/repl/replication_metrics.idl b/src/mongo/db/repl/replication_metrics.idl index 5821858d870..e065a86631e 100644 --- a/src/mongo/db/repl/replication_metrics.idl +++ b/src/mongo/db/repl/replication_metrics.idl @@ -130,6 +130,10 @@ structs: description: "The node's target opTime for catchup" type: optime optional: true + newTermStartDate: + description: "Time the new term oplog entry was written" + type: date + optional: true ElectionParticipantMetrics: description: "Stores metrics that are specific to the last election in which the node voted" |