summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_impl.cpp')
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_impl.cpp b/src/mongo/db/repl/replication_coordinator_impl.cpp
index 623f5251977..099f9462504 100644
--- a/src/mongo/db/repl/replication_coordinator_impl.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl.cpp
@@ -40,8 +40,9 @@
#include "mongo/db/client.h"
#include "mongo/db/commands.h"
#include "mongo/db/concurrency/d_concurrency.h"
-#include "mongo/db/global_timestamp.h"
#include "mongo/db/index/index_descriptor.h"
+#include "mongo/db/logical_clock.h"
+#include "mongo/db/logical_time.h"
#include "mongo/db/operation_context_noop.h"
#include "mongo/db/repl/check_quorum_for_config_change.h"
#include "mongo/db/repl/data_replicator_external_state_initial_sync.h"
@@ -2677,7 +2678,9 @@ void ReplicationCoordinatorImpl::_performPostMemberStateUpdateAction(
} else {
_electionId = OID::gen();
}
- _topCoord->processWinElection(_electionId, getNextGlobalTimestamp(getServiceContext()));
+
+ auto ts = LogicalClock::get(getServiceContext())->reserveTicks(1).asTimestamp();
+ _topCoord->processWinElection(_electionId, ts);
invariant(!_isCatchingUp);
invariant(!_isWaitingForDrainToComplete);
_isCatchingUp = true;
@@ -2872,13 +2875,15 @@ ReplicationCoordinatorImpl::_setCurrentRSConfig_inlock(const ReplicaSetConfig& n
// Downgrade
invariant(newConfig.getProtocolVersion() == 0);
_electionId = OID::gen();
- _topCoord->setElectionInfo(_electionId, getNextGlobalTimestamp(getServiceContext()));
+ auto ts = LogicalClock::get(getServiceContext())->reserveTicks(1).asTimestamp();
+ _topCoord->setElectionInfo(_electionId, ts);
} else if (oldConfig.getProtocolVersion() < newConfig.getProtocolVersion()) {
// Upgrade
invariant(newConfig.getProtocolVersion() == 1);
invariant(_topCoord->getTerm() != OpTime::kUninitializedTerm);
_electionId = OID::fromTerm(_topCoord->getTerm());
- _topCoord->setElectionInfo(_electionId, getNextGlobalTimestamp(getServiceContext()));
+ auto ts = LogicalClock::get(getServiceContext())->reserveTicks(1).asTimestamp();
+ _topCoord->setElectionInfo(_electionId, ts);
}
}