summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator_impl.cpp
diff options
context:
space:
mode:
authorAndy Schwerin <Andy Schwerin schwerin@mongodb.com>2017-04-27 09:58:05 -0400
committerAndy Schwerin <Andy Schwerin schwerin@mongodb.com>2017-04-27 09:58:05 -0400
commit2ee2c54bd64b5981c2e6c421475c69139a85c1db (patch)
tree9e2f121af9929fbd0d79872a7d34ea4663eea095 /src/mongo/db/repl/replication_coordinator_impl.cpp
parentc87222f209ac73621274869cc459672cc3ff978c (diff)
downloadmongo-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.cpp12
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