diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-24 17:08:50 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-24 17:08:50 +0000 |
commit | fcdb0975dec63232be10b480197ef7f38499dc4e (patch) | |
tree | f456ccbcc12ddadc50af697167ebd61b82b8ec92 /searchcore | |
parent | 00c425bbb2cda9e1aadebd9aa5e8323b4f99c25f (diff) |
Disconnect the runner on stop
Diffstat (limited to 'searchcore')
8 files changed, 18 insertions, 5 deletions
diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp index bebdeb2a701..b0c46dbd789 100644 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp +++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp @@ -308,7 +308,10 @@ struct MySimpleJob : public BlockableMaintenanceJob ++_runCnt; return true; } - void onStop() override { _stopped = true; } + void onStop() override { + BlockableMaintenanceJob::onStop(); + _stopped = true; + } }; struct MySplitJob : public MySimpleJob @@ -345,7 +348,10 @@ struct MyLongRunningJob : public BlockableMaintenanceJob usleep(10000); return false; } - void onStop() override { _stopped = true; } + void onStop() override { + BlockableMaintenanceJob::onStop(); + _stopped = true; + } }; using MyAttributeManager = test::MockAttributeManager; diff --git a/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp b/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp index ce3bd3b8e9b..942e6c14a5f 100644 --- a/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp @@ -91,6 +91,13 @@ BlockableMaintenanceJob::unBlock(BlockedReason reason) } } +void +BlockableMaintenanceJob::onStop() +{ + LockGuard guard(_mutex); + _runner = nullptr; +} + bool BlockableMaintenanceJob::isBlocked() const { diff --git a/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h b/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h index fee0f91e717..adf6f2f3b6c 100644 --- a/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h +++ b/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h @@ -49,6 +49,7 @@ public: bool isBlocked(BlockedReason reason); void considerRun(); + void onStop() override; void setBlocked(BlockedReason reason) override; void unBlock(BlockedReason reason) override; bool isBlocked() const override; diff --git a/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h b/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h index 9c1e92e2fec..7ef1a491667 100644 --- a/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h +++ b/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h @@ -125,7 +125,6 @@ public: // IMaintenanceJob API bool run() override; - void onStop() override { } // IClusterStateChangedHandler API void notifyClusterStateChanged(const std::shared_ptr<IBucketStateCalculator> &newCalc) override; diff --git a/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp b/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp index 576e608d24b..9e34462ae21 100644 --- a/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp @@ -451,6 +451,7 @@ BucketMoveJobV2::notifyDiskMemUsage(DiskMemUsageState state) void BucketMoveJobV2::onStop() { // Called by master write thread + BlockableMaintenanceJob::onStop(); _stopped = true; } diff --git a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h index e29472ea154..4116a4cedf0 100644 --- a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h +++ b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h @@ -28,7 +28,6 @@ public: IClusterStateChangedNotifier &clusterStateChangedNotifier, bool nodeRetired); ~LidSpaceCompactionJob() override; - void onStop() override { } }; } // namespace proton 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 a4fa1195c79..6ac8f803800 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 @@ -160,6 +160,7 @@ CompactionJob::create(const DocumentDBLidSpaceCompactionConfig &config, void CompactionJob::onStop() { + BlockableMaintenanceJob::onStop(); _stopped = true; } diff --git a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h b/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h index ba6faf556c0..76967635f4a 100644 --- a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h +++ b/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h @@ -42,7 +42,6 @@ public: // Implements IMaintenanceJob bool run() override; - void onStop() override { } }; } // namespace proton |