summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
authorMedha Potluri <medha.potluri@mongodb.com>2019-08-07 15:25:21 -0400
committerMedha Potluri <medha.potluri@mongodb.com>2019-08-13 13:34:56 -0400
commitee47f663b7473b0b56b401922a532e809c516a50 (patch)
tree47497bad14ad8f5722bf395f046d67283d258cbd /src/mongo/db
parent6e3fd1902f1977d6372c6fdfab4fd9ab73c89aea (diff)
downloadmongo-ee47f663b7473b0b56b401922a532e809c516a50.tar.gz
SERVER-41507 Track the time the new term oplog entry was written in replSetStatus on primaries
Diffstat (limited to 'src/mongo/db')
-rw-r--r--src/mongo/db/repl/SConscript1
-rw-r--r--src/mongo/db/repl/replication_coordinator_external_state_impl.cpp4
-rw-r--r--src/mongo/db/repl/replication_metrics.cpp6
-rw-r--r--src/mongo/db/repl/replication_metrics.h1
-rw-r--r--src/mongo/db/repl/replication_metrics.idl4
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"