summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-01-27 18:27:13 +0100
committerGitHub <noreply@github.com>2021-01-27 18:27:13 +0100
commitcaef0dfa40dc58d47936a7b44bcdc69b24b43a98 (patch)
treed94762afe7549bdecd670f7dca50c8e35fa54f29
parent46f9bb123d4e3e858030a886298e247da35456ad (diff)
parentb2a9e12c6cdcf54b3d40002aad6bb3d523dbf39b (diff)
Merge pull request #16259 from vespa-engine/balder/onstop
Add a proper way for controlled stop.
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp7
4 files changed, 11 insertions, 3 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h b/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h
index df6889ecf04..34e882c1f01 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h
@@ -38,6 +38,7 @@ public:
virtual vespalib::duration getInterval() const { return _interval; }
virtual bool isBlocked() const { return false; }
virtual IBlockableMaintenanceJob *asBlockable() { return nullptr; }
+ virtual void onStop() {}
/**
* Register maintenance job runner, in case event passed to the
diff --git a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp
index f5441f86835..58ecca9f8ce 100644
--- a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp
@@ -83,7 +83,10 @@ CompactionJob::CompactionJob(const DocumentDBLidSpaceCompactionConfig &config,
{
}
-CompactionJob::~CompactionJob() {
+CompactionJob::~CompactionJob() = default;
+
+void
+CompactionJob::onStop() {
_bucketExecutor.sync();
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.h b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.h
index 3a61ee85a87..6c11961e137 100644
--- a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.h
+++ b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.h
@@ -30,6 +30,7 @@ private:
bool scanDocuments(const search::LidUsageStats &stats) override;
void moveDocument(const search::DocumentMetaData & meta, std::shared_ptr<IDestructorCallback> onDone);
+ void onStop() override;
public:
CompactionJob(const DocumentDBLidSpaceCompactionConfig &config,
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp
index 9ad0921c342..9518342a37f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp
@@ -21,8 +21,11 @@ MaintenanceJobRunner::run()
void
MaintenanceJobRunner::stop() {
- Guard guard(_lock);
- _stopped = true;
+ {
+ Guard guard(_lock);
+ _stopped = true;
+ }
+ _job->onStop();
}
void