summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-04-09 20:37:21 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-04-09 20:37:21 +0000
commit942bd7bafc0624cf96dc709edb019eacdc5f988f (patch)
tree7035eadcd31e10ed039af1ea07d00ec549315380 /searchcore
parentcff43ac7d5a296db8f49eb7277435947b9662339 (diff)
Keep shared_ptrs to BucketMove og LidSpace jobs.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp20
8 files changed, 22 insertions, 18 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp b/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp
index 24a4d6d5dee..fc2eeaab661 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.cpp
@@ -73,6 +73,7 @@ BucketMoveJobV2::BucketMoveJobV2(const std::shared_ptr<IBucketStateCalculator> &
bucketdb::IBucketCreateListener(),
IBucketStateChangedHandler(),
IDiskMemUsageListener(),
+ std::enable_shared_from_this<BucketMoveJobV2>(),
_calc(calc),
_moveHandler(moveHandler),
_modifiedHandler(modifiedHandler),
diff --git a/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.h b/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.h
index 620b76ac81c..eba8fd9a62c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.h
+++ b/searchcore/src/vespa/searchcore/proton/server/bucketmovejobv2.h
@@ -37,7 +37,8 @@ class BucketMoveJobV2 : public BlockableMaintenanceJob,
public IClusterStateChangedHandler,
public bucketdb::IBucketCreateListener,
public IBucketStateChangedHandler,
- public IDiskMemUsageListener
+ public IDiskMemUsageListener,
+ public std::enable_shared_from_this<BucketMoveJobV2>
{
private:
using BucketExecutor = storage::spi::BucketExecutor;
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 d0175d69e71..3972072b41d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h
@@ -23,7 +23,8 @@ private:
const vespalib::duration _interval;
public:
- typedef std::unique_ptr<IMaintenanceJob> UP;
+ using UP = std::unique_ptr<IMaintenanceJob>;
+ using SP = std::shared_ptr<IMaintenanceJob>;
IMaintenanceJob(const vespalib::string &name,
vespalib::duration delay,
diff --git a/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp b/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp
index 59324cc9fe2..aa078376ece 100644
--- a/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp
@@ -4,10 +4,10 @@
namespace proton {
-JobTrackedMaintenanceJob::JobTrackedMaintenanceJob(const IJobTracker::SP &tracker,
- IMaintenanceJob::UP job)
+JobTrackedMaintenanceJob::JobTrackedMaintenanceJob(IJobTracker::SP tracker,
+ IMaintenanceJob::SP job)
: IMaintenanceJob(job->getName(), job->getDelay(), job->getInterval()),
- _tracker(tracker),
+ _tracker(std::move(tracker)),
_job(std::move(job)),
_running(false)
{
diff --git a/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h b/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h
index 9acdee557fd..0e1b2b00ce5 100644
--- a/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h
@@ -13,11 +13,11 @@ class JobTrackedMaintenanceJob : public IMaintenanceJob
{
private:
IJobTracker::SP _tracker;
- IMaintenanceJob::UP _job;
+ IMaintenanceJob::SP _job;
bool _running;
public:
- JobTrackedMaintenanceJob(const IJobTracker::SP &tracker, IMaintenanceJob::UP job);
+ JobTrackedMaintenanceJob(IJobTracker::SP tracker, IMaintenanceJob::SP job);
~JobTrackedMaintenanceJob() override;
bool isBlocked() const override { return _job->isBlocked(); }
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 042cd70f7e0..70a63a4a4eb 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
@@ -121,6 +121,7 @@ CompactionJob::CompactionJob(const DocumentDBLidSpaceCompactionConfig &config,
document::BucketSpace bucketSpace)
: LidSpaceCompactionJobBase(config, std::move(handler), opStorer, diskMemUsageNotifier,
blockableConfig, clusterStateChangedNotifier, nodeRetired),
+ std::enable_shared_from_this<CompactionJob>(),
_master(master),
_bucketExecutor(bucketExecutor),
_bucketSpace(bucketSpace),
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 b73f971f8ee..21445de8d85 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
@@ -21,7 +21,7 @@ namespace proton::lidspace {
* Moves documents from higher lids to lower lids. It uses a BucketExecutor that ensures that the bucket
* is locked for changes while the document is moved.
*/
-class CompactionJob : public LidSpaceCompactionJobBase
+class CompactionJob : public LidSpaceCompactionJobBase, public std::enable_shared_from_this<CompactionJob>
{
private:
using BucketExecutor = storage::spi::BucketExecutor;
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 3d8348f3591..e31adc45888 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
@@ -20,9 +20,9 @@ namespace proton {
namespace {
IMaintenanceJob::UP
-trackJob(const IJobTracker::SP &tracker, IMaintenanceJob::UP job)
+trackJob(IJobTracker::SP tracker, std::shared_ptr<IMaintenanceJob> job)
{
- return std::make_unique<JobTrackedMaintenanceJob>(tracker, std::move(job));
+ return std::make_unique<JobTrackedMaintenanceJob>(std::move(tracker), std::move(job));
}
void
@@ -32,16 +32,16 @@ injectLidSpaceCompactionJobs(MaintenanceController &controller,
ILidSpaceCompactionHandler::Vector lscHandlers,
IOperationStorer &opStorer,
IFrozenBucketHandler &fbHandler,
- const IJobTracker::SP &tracker,
+ IJobTracker::SP tracker,
IDiskMemUsageNotifier &diskMemUsageNotifier,
IClusterStateChangedNotifier &clusterStateChangedNotifier,
const std::shared_ptr<IBucketStateCalculator> &calc,
document::BucketSpace bucketSpace)
{
for (auto &lidHandler : lscHandlers) {
- std::unique_ptr<IMaintenanceJob> job;
+ std::shared_ptr<IMaintenanceJob> job;
if (config.getLidSpaceCompactionConfig().useBucketExecutor()) {
- job = std::make_unique<lidspace::CompactionJob>(
+ job = std::make_shared<lidspace::CompactionJob>(
config.getLidSpaceCompactionConfig(),
std::move(lidHandler), opStorer, controller.masterThread(), bucketExecutor,
diskMemUsageNotifier,
@@ -50,7 +50,7 @@ injectLidSpaceCompactionJobs(MaintenanceController &controller,
(calc ? calc->nodeRetired() : false),
bucketSpace);
} else {
- job = std::make_unique<LidSpaceCompactionJob>(
+ job = std::make_shared<LidSpaceCompactionJob>(
config.getLidSpaceCompactionConfig(),
std::move(lidHandler), opStorer, fbHandler,
diskMemUsageNotifier,
@@ -58,7 +58,7 @@ injectLidSpaceCompactionJobs(MaintenanceController &controller,
clusterStateChangedNotifier,
(calc ? calc->nodeRetired() : false));
}
- controller.registerJobInMasterThread(trackJob(tracker, std::move(job)));
+ controller.registerJobInMasterThread(trackJob(std::move(tracker), std::move(job)));
}
}
@@ -78,9 +78,9 @@ injectBucketMoveJob(MaintenanceController &controller,
DocumentDBJobTrackers &jobTrackers,
IDiskMemUsageNotifier &diskMemUsageNotifier)
{
- std::unique_ptr<IMaintenanceJob> bmj;
+ std::shared_ptr<IMaintenanceJob> bmj;
if (config.getBucketMoveConfig().useBucketExecutor()) {
- bmj = std::make_unique<BucketMoveJobV2>(calc,
+ bmj = std::make_shared<BucketMoveJobV2>(calc,
moveHandler,
bucketModifiedHandler,
controller.masterThread(),
@@ -94,7 +94,7 @@ injectBucketMoveJob(MaintenanceController &controller,
config.getBlockableJobConfig(),
docTypeName, bucketSpace);
} else {
- bmj = std::make_unique<BucketMoveJob>(calc,
+ bmj = std::make_shared<BucketMoveJob>(calc,
moveHandler,
bucketModifiedHandler,
controller.getReadySubDB(),