summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-12-13 11:39:51 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-12-13 11:39:51 +0000
commitebe965ca84f3a66551d5626ccdb7e8a10f617bab (patch)
tree39b7a25263da148f63a94441878c4d4475d1e648
parent1381d93a77c14e95d72f260d9fbef0abbdc240a3 (diff)
There is only one the master executor available to the MaintenanceJobs.
Remove all traces suggesting otherwise.
-rw-r--r--searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp29
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp23
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h1
5 files changed, 13 insertions, 53 deletions
diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
index 47555288a10..debad7eaf26 100644
--- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
@@ -917,7 +917,7 @@ TEST_F("require that a simple maintenance job is executed", MaintenanceControlle
{
auto job = std::make_unique<MySimpleJob>(200ms, 200ms, 3);
MySimpleJob &myJob = *job;
- f._mc.registerJobInMasterThread(std::move(job));
+ f._mc.registerJob(std::move(job));
f._injectDefaultJobs = false;
f.startMaintenance();
bool done = myJob._latch.await(TIMEOUT);
@@ -929,7 +929,7 @@ TEST_F("require that a split maintenance job is executed", MaintenanceController
{
auto job = std::make_unique<MySplitJob>(200ms, TIMEOUT * 2, 3);
MySplitJob &myJob = *job;
- f._mc.registerJobInMasterThread(std::move(job));
+ f._mc.registerJob(std::move(job));
f._injectDefaultJobs = false;
f.startMaintenance();
bool done = myJob._latch.await(TIMEOUT);
@@ -942,7 +942,7 @@ TEST_F("require that blocked jobs are not executed", MaintenanceControllerFixtur
auto job = std::make_unique<MySimpleJob>(200ms, 200ms, 0);
MySimpleJob &myJob = *job;
myJob.block();
- f._mc.registerJobInMasterThread(std::move(job));
+ f._mc.registerJob(std::move(job));
f._injectDefaultJobs = false;
f.startMaintenance();
std::this_thread::sleep_for(2s);
@@ -955,8 +955,8 @@ TEST_F("require that maintenance controller state list jobs", MaintenanceControl
auto job1 = std::make_unique<MySimpleJob>(TIMEOUT * 2, TIMEOUT * 2, 0);
auto job2 = std::make_unique<MyLongRunningJob>(200ms, 200ms);
auto &longRunningJob = dynamic_cast<MyLongRunningJob &>(*job2);
- f._mc.registerJobInMasterThread(std::move(job1));
- f._mc.registerJobInMasterThread(std::move(job2));
+ f._mc.registerJob(std::move(job1));
+ f._mc.registerJob(std::move(job2));
f._injectDefaultJobs = false;
f.startMaintenance();
longRunningJob._firstRun.await(TIMEOUT);
@@ -994,14 +994,6 @@ containsJob(const MaintenanceController::JobList &jobs, const vespalib::string &
return findJob(jobs, jobName) != nullptr;
}
-bool
-containsJobAndExecutedBy(const MaintenanceController::JobList &jobs, const vespalib::string &jobName,
- const vespalib::Executor & executor)
-{
- const auto *job = findJob(jobs, jobName);
- return (job != nullptr) && (&job->getExecutor() == &executor);
-}
-
TEST_F("require that lid space compaction jobs can be disabled", MaintenanceControllerFixture)
{
f.forwardMaintenanceConfig();
@@ -1018,17 +1010,6 @@ TEST_F("require that lid space compaction jobs can be disabled", MaintenanceCont
}
}
-TEST_F("require that maintenance jobs are run by correct executor", MaintenanceControllerFixture)
-{
- f.injectMaintenanceJobs();
- auto jobs = f._mc.getJobList();
- EXPECT_EQUAL(7u, jobs.size());
- EXPECT_TRUE(containsJobAndExecutedBy(jobs, "heart_beat", f._threadService));
- EXPECT_TRUE(containsJobAndExecutedBy(jobs, "prune_removed_documents.searchdocument", f._threadService));
- EXPECT_TRUE(containsJobAndExecutedBy(jobs, "move_buckets.searchdocument", f._threadService));
- EXPECT_TRUE(containsJobAndExecutedBy(jobs, "sample_attribute_usage.searchdocument", f._threadService));
-}
-
void
assertPruneRemovedDocumentsConfig(vespalib::duration expDelay, vespalib::duration expInterval, vespalib::duration interval, MaintenanceControllerFixture &f)
{
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
index c188bcc432d..4e2dd1ea86f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
@@ -38,7 +38,7 @@ injectLidSpaceCompactionJobs(MaintenanceController &controller,
std::move(lidHandler), opStorer, controller.masterThread(),
bucketExecutor, diskMemUsageNotifier,config.getBlockableJobConfig(),
clusterStateChangedNotifier, calc && calc->nodeRetired(), bucketSpace);
- controller.registerJobInMasterThread(trackJob(tracker, std::move(job)));
+ controller.registerJob(trackJob(tracker, std::move(job)));
}
}
@@ -61,7 +61,7 @@ injectBucketMoveJob(MaintenanceController &controller,
bucketExecutor, controller.getReadySubDB(), controller.getNotReadySubDB(),
bucketCreateNotifier, clusterStateChangedNotifier, bucketStateChangedNotifier,
diskMemUsageNotifier, config.getBlockableJobConfig(), docTypeName, bucketSpace);
- controller.registerJobInMasterThread(trackJob(jobTrackers.getBucketMove(), std::move(bmj)));
+ controller.registerJob(trackJob(jobTrackers.getBucketMove(), std::move(bmj)));
}
}
@@ -86,12 +86,12 @@ MaintenanceJobsInjector::injectJobs(MaintenanceController &controller,
IAttributeManagerSP notReadyAttributeManager,
AttributeUsageFilter &attributeUsageFilter)
{
- controller.registerJobInMasterThread(std::make_unique<HeartBeatJob>(hbHandler, config.getHeartBeatConfig()));
+ controller.registerJob(std::make_unique<HeartBeatJob>(hbHandler, config.getHeartBeatConfig()));
const auto & docTypeName = controller.getDocTypeName().getName();
const MaintenanceDocumentSubDB &mRemSubDB(controller.getRemSubDB());
- controller.registerJobInMasterThread(
+ controller.registerJob(
trackJob(jobTrackers.getRemovedDocumentsPrune(),
PruneRemovedDocumentsJob::create(config.getPruneRemovedDocumentsConfig(), controller.retainDB(),
*mRemSubDB.meta_store(), mRemSubDB.sub_db_id(), bucketSpace,
@@ -113,7 +113,7 @@ MaintenanceJobsInjector::injectJobs(MaintenanceController &controller,
moveHandler, bucketModifiedHandler, clusterStateChangedNotifier, bucketStateChangedNotifier,
calc, jobTrackers, diskMemUsageNotifier);
- controller.registerJobInMasterThread(
+ controller.registerJob(
std::make_unique<SampleAttributeUsageJob>(std::move(readyAttributeManager),
std::move(notReadyAttributeManager),
attributeUsageFilter, docTypeName,
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp
index adafa4c6217..8f13dac8f6f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp
@@ -30,13 +30,6 @@ public:
void run() override { _job->run(); }
};
-bool
-isRunnable(const MaintenanceJobRunner & job, const Executor * master) {
- return (&job.getExecutor() == master)
- ? false
- : job.isRunnable();
-}
-
}
MaintenanceController::MaintenanceController(FNET_Transport & transport,
@@ -61,18 +54,11 @@ MaintenanceController::~MaintenanceController()
}
void
-MaintenanceController::registerJobInMasterThread(IMaintenanceJob::UP job)
-{
- // Called by master write thread
- registerJob(_masterThread, std::move(job));
-}
-
-void
-MaintenanceController::registerJob(Executor & executor, IMaintenanceJob::UP job)
+MaintenanceController::registerJob(IMaintenanceJob::UP job)
{
// Called by master write thread
Guard guard(_jobsLock);
- _jobs.push_back(std::make_shared<MaintenanceJobRunner>(executor, std::move(job)));
+ _jobs.push_back(std::make_shared<MaintenanceJobRunner>(_masterThread, std::move(job)));
}
void
@@ -89,11 +75,6 @@ MaintenanceController::killJobs()
for (auto &job : _jobs) {
job->stop(); // Make sure no more tasks are added to the executor
}
- for (auto &job : _jobs) {
- while (isRunnable(*job, &_masterThread)) {
- std::this_thread::sleep_for(1ms);
- }
- }
JobList tmpJobs;
{
Guard guard(_jobsLock);
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h
index af2f7e8a0fc..08e9d9c1e80 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h
@@ -45,7 +45,7 @@ public:
vespalib::MonitoredRefCount& refCount, const DocTypeName& docTypeName);
~MaintenanceController();
- void registerJobInMasterThread(IMaintenanceJob::UP job);
+ void registerJob(IMaintenanceJob::UP job);
void killJobs();
@@ -96,7 +96,6 @@ private:
void addJobsToPeriodicTimer();
void restart();
void performHoldJobs(JobList jobs);
- void registerJob(vespalib::Executor & executor, IMaintenanceJob::UP job);
};
} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h b/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h
index 17f244e6621..200f0d05de0 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h
@@ -32,7 +32,6 @@ public:
void run() override;
void stop();
bool isRunnable() const;
- const vespalib::Executor & getExecutor() const { return _executor; }
const IMaintenanceJob &getJob() const { return *_job; }
IMaintenanceJob &getJob() { return *_job; }
};