diff options
Diffstat (limited to 'src/mongo/db/service_liaison_mongos.cpp')
-rw-r--r-- | src/mongo/db/service_liaison_mongos.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mongo/db/service_liaison_mongos.cpp b/src/mongo/db/service_liaison_mongos.cpp index 7da5e508109..666ca06ea68 100644 --- a/src/mongo/db/service_liaison_mongos.cpp +++ b/src/mongo/db/service_liaison_mongos.cpp @@ -27,6 +27,8 @@ * it in the license file. */ +#define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kControl + #include "mongo/platform/basic.h" #include "mongo/db/service_liaison_mongos.h" @@ -36,7 +38,7 @@ #include "mongo/s/query/cluster_cursor_manager.h" #include "mongo/stdx/mutex.h" #include "mongo/util/clock_source.h" -#include "mongo/util/periodic_runner.h" +#include "mongo/util/log.h" namespace mongo { @@ -79,12 +81,20 @@ LogicalSessionIdSet ServiceLiaisonMongos::getOpenCursorSessions(OperationContext void ServiceLiaisonMongos::scheduleJob(PeriodicRunner::PeriodicJob job) { invariant(hasGlobalServiceContext()); - getGlobalServiceContext()->getPeriodicRunner()->scheduleJob(std::move(job)); + auto jobAnchor = getGlobalServiceContext()->getPeriodicRunner()->makeJob(std::move(job)); + jobAnchor.start(); + + { + stdx::lock_guard lk(_mutex); + _jobs.push_back(std::move(jobAnchor)); + } } void ServiceLiaisonMongos::join() { - invariant(hasGlobalServiceContext()); - getGlobalServiceContext()->getPeriodicRunner()->shutdown(); + auto jobs = [&] { + stdx::lock_guard lk(_mutex); + return std::exchange(_jobs, {}); + }(); } Date_t ServiceLiaisonMongos::now() const { |