diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-27 18:27:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-27 18:27:13 +0100 |
commit | caef0dfa40dc58d47936a7b44bcdc69b24b43a98 (patch) | |
tree | d94762afe7549bdecd670f7dca50c8e35fa54f29 | |
parent | 46f9bb123d4e3e858030a886298e247da35456ad (diff) | |
parent | b2a9e12c6cdcf54b3d40002aad6bb3d523dbf39b (diff) |
Merge pull request #16259 from vespa-engine/balder/onstop
Add a proper way for controlled stop.
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 |