diff options
author | Andy Schwerin <Andy Schwerin schwerin@mongodb.com> | 2017-04-27 09:58:05 -0400 |
---|---|---|
committer | Andy Schwerin <Andy Schwerin schwerin@mongodb.com> | 2017-04-27 09:58:05 -0400 |
commit | 2ee2c54bd64b5981c2e6c421475c69139a85c1db (patch) | |
tree | 9e2f121af9929fbd0d79872a7d34ea4663eea095 /src/mongo/db/repl/replication_coordinator_impl.cpp | |
parent | c87222f209ac73621274869cc459672cc3ff978c (diff) | |
download | mongo-2ee2c54bd64b5981c2e6c421475c69139a85c1db.tar.gz |
SERVER-28865 Replace ReplicationExecutor's prng in ReplicationCoordinatorImpl with an explicit prng.
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_impl.cpp')
-rw-r--r-- | src/mongo/db/repl/replication_coordinator_impl.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_impl.cpp b/src/mongo/db/repl/replication_coordinator_impl.cpp index 64888f7fa89..e538718650c 100644 --- a/src/mongo/db/repl/replication_coordinator_impl.cpp +++ b/src/mongo/db/repl/replication_coordinator_impl.cpp @@ -320,7 +320,8 @@ ReplicationCoordinatorImpl::ReplicationCoordinatorImpl( _sleptLastElection(false), _canAcceptNonLocalWrites(!(settings.usingReplSets() || settings.isSlave())), _canServeNonLocalReads(0U), - _storage(storage) { + _storage(storage), + _random(prngSeed) { invariant(_service); @@ -336,7 +337,7 @@ ReplicationCoordinatorImpl::ReplicationCoordinatorImpl( _externalState->setupNoopWriter(kNoopWriterPeriod); } -ReplicationCoordinatorImpl::~ReplicationCoordinatorImpl() {} +ReplicationCoordinatorImpl::~ReplicationCoordinatorImpl() = default; void ReplicationCoordinatorImpl::waitForStartUpComplete_forTest() { _waitForStartUpComplete(); @@ -370,7 +371,8 @@ Date_t ReplicationCoordinatorImpl::getElectionTimeout_forTest() const { } Milliseconds ReplicationCoordinatorImpl::getRandomizedElectionOffset_forTest() { - return _getRandomizedElectionOffset(); + stdx::lock_guard<stdx::mutex> lk(_mutex); + return _getRandomizedElectionOffset_inlock(); } boost::optional<Date_t> ReplicationCoordinatorImpl::getPriorityTakeover_forTest() const { @@ -3786,5 +3788,9 @@ ReplicationCoordinatorImpl::_cancelElectionIfNeeded_inTopoLock() { return _electionFinishedEvent; } +int64_t ReplicationCoordinatorImpl::_nextRandomInt64_inlock(int64_t limit) { + return _random.nextInt64(limit); +} + } // namespace repl } // namespace mongo |