diff options
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_impl.cpp')
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl.cpp | 13 |
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); } } |