diff options
-rw-r--r-- | src/mongo/util/periodic_runner_impl.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/mongo/util/periodic_runner_impl.cpp b/src/mongo/util/periodic_runner_impl.cpp index aad8d19c34f..f5fb19a8a2b 100644 --- a/src/mongo/util/periodic_runner_impl.cpp +++ b/src/mongo/util/periodic_runner_impl.cpp @@ -101,6 +101,8 @@ PeriodicRunnerImpl::PeriodicJobImpl::PeriodicJobImpl(PeriodicJob job, : _job(std::move(job)), _clockSource(source), _serviceContext(svc) {} void PeriodicRunnerImpl::PeriodicJobImpl::_run() { + stdx::lock_guard<stdx::mutex> lk(_mutex); + invariant(_execStatus == PeriodicJobImpl::ExecutionStatus::NOT_SCHEDULED); _thread = stdx::thread([this] { Client::initThread(_job.name, _serviceContext, nullptr); while (true) { @@ -125,14 +127,10 @@ void PeriodicRunnerImpl::PeriodicJobImpl::_run() { } } }); + _execStatus = PeriodicJobImpl::ExecutionStatus::RUNNING; } void PeriodicRunnerImpl::PeriodicJobImpl::start() { - { - stdx::lock_guard<stdx::mutex> lk(_mutex); - invariant(_execStatus == PeriodicJobImpl::ExecutionStatus::NOT_SCHEDULED); - _execStatus = PeriodicJobImpl::ExecutionStatus::RUNNING; - } _run(); } |