summaryrefslogtreecommitdiff
path: root/src/mongo/db/service_liaison_mongos.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/service_liaison_mongos.cpp')
-rw-r--r--src/mongo/db/service_liaison_mongos.cpp18
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 {