diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-09 18:16:26 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-09 19:22:42 +0000 |
commit | cff43ac7d5a296db8f49eb7277435947b9662339 (patch) | |
tree | 8b0695c17e9b6a4e9c014524556ec9b3809733d9 | |
parent | a16b5e42e5e1b5fac43983375145b08328f65f8c (diff) |
Make the scope of the lidspace handler fit its lifetime.
5 files changed, 15 insertions, 40 deletions
diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp index ff1b29d646e..b5e2e9d0b01 100644 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp +++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp @@ -349,22 +349,6 @@ struct MyLongRunningJob : public BlockableMaintenanceJob using MyAttributeManager = test::MockAttributeManager; -struct MockLidSpaceCompactionHandler : public ILidSpaceCompactionHandler -{ - vespalib::string name; - - explicit MockLidSpaceCompactionHandler(const vespalib::string &name_) : name(name_) {} - vespalib::string getName() const override { return name; } - void set_operation_listener(documentmetastore::OperationListener::SP) override {} - uint32_t getSubDbId() const override { return 0; } - search::LidUsageStats getLidStatus() const override { return search::LidUsageStats(); } - IDocumentScanIterator::UP getIterator() const override { return IDocumentScanIterator::UP(); } - MoveOperation::UP createMoveOperation(const search::DocumentMetaData &, uint32_t) const override { return MoveOperation::UP(); } - void handleMove(const MoveOperation &, IDestructorCallback::SP) override {} - void handleCompactLidSpace(const CompactLidSpaceOperation &, std::shared_ptr<IDestructorCallback>) override {} - search::DocumentMetaData getMetaData(uint32_t ) const override { return {}; } -}; - class MaintenanceControllerFixture { public: @@ -384,7 +368,6 @@ public: MyDocumentSubDB _notReady; MySessionCachePruner _gsp; MyFeedHandler _fh; - ILidSpaceCompactionHandler::Vector _lscHandlers; DocumentDBMaintenanceConfig::SP _mcCfg; bool _injectDefaultJobs; DocumentDBJobTrackers _jobTrackers; @@ -804,7 +787,6 @@ MaintenanceControllerFixture::MaintenanceControllerFixture() _notReady(2u, SubDbType::NOTREADY, _builder.getRepo(), _bucketDB, _docTypeName), _gsp(), _fh(_executor._threadId), - _lscHandlers(), _mcCfg(new DocumentDBMaintenanceConfig), _injectDefaultJobs(true), _jobTrackers(), @@ -864,7 +846,7 @@ void MaintenanceControllerFixture::injectMaintenanceJobs() { if (_injectDefaultJobs) { - MaintenanceJobsInjector::injectJobs(_mc, *_mcCfg, _bucketExecutor, _fh, _gsp, _lscHandlers, _fh, _mc, + MaintenanceJobsInjector::injectJobs(_mc, *_mcCfg, _bucketExecutor, _fh, _gsp, _fh, _mc, _bucketCreateNotifier, _docTypeName.getName(), makeBucketSpace(), _fh, _fh, _bmc, _clusterStateHandler, _bucketHandler, _calc, _diskMemUsageNotifier, _jobTrackers, _readyAttributeManager, _notReadyAttributeManager, @@ -1288,18 +1270,17 @@ containsJobAndExecutedBy(const MaintenanceController::JobList &jobs, const vespa TEST_F("require that lid space compaction jobs can be disabled", MaintenanceControllerFixture) { - f._lscHandlers.push_back(std::make_unique<MockLidSpaceCompactionHandler>("my_handler")); f.forwardMaintenanceConfig(); { auto jobs = f._mc.getJobList(); - EXPECT_EQUAL(6u, jobs.size()); - EXPECT_TRUE(containsJob(jobs, "lid_space_compaction.my_handler")); + EXPECT_EQUAL(8u, jobs.size()); + EXPECT_TRUE(containsJob(jobs, "lid_space_compaction.searchdocument.my_sub_db")); } f.setLidSpaceCompactionConfig(DocumentDBLidSpaceCompactionConfig::createDisabled()); { auto jobs = f._mc.getJobList(); EXPECT_EQUAL(5u, jobs.size()); - EXPECT_FALSE(containsJob(jobs, "lid_space_compaction.my_handler")); + EXPECT_FALSE(containsJob(jobs, "lid_space_compaction.searchdocument.my_sub_db")); } } @@ -1307,7 +1288,7 @@ TEST_F("require that maintenance jobs are run by correct executor", MaintenanceC { f.injectMaintenanceJobs(); auto jobs = f._mc.getJobList(); - EXPECT_EQUAL(5u, jobs.size()); + EXPECT_EQUAL(8u, jobs.size()); EXPECT_TRUE(containsJobAndExecutedBy(jobs, "heart_beat", f._threadService)); EXPECT_TRUE(containsJobAndExecutedBy(jobs, "prune_session_cache", f._genericExecutor)); EXPECT_TRUE(containsJobAndExecutedBy(jobs, "prune_removed_documents.searchdocument", f._threadService)); diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp index 3cb5c31e13c..d99e579b89f 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp @@ -9,7 +9,6 @@ #include "feedhandler.h" #include "idocumentdbowner.h" #include "idocumentsubdb.h" -#include "lid_space_compaction_handler.h" #include "maintenance_jobs_injector.h" #include "reconfig_params.h" #include <vespa/document/repo/documenttyperepo.h> @@ -174,7 +173,6 @@ DocumentDB::DocumentDB(const vespalib::string &baseDir, DocumentSubDBCollection::Config(protonCfg.numsearcherthreads), hwInfo), _maintenanceController(_writeService.master(), sharedExecutor, _docTypeName), - _lidSpaceCompactionHandlers(), _jobTrackers(), _calc(), _metricsUpdater(_subDBs, _writeService, _jobTrackers, *_sessionManager, _writeFilter) @@ -927,16 +925,11 @@ DocumentDB::injectMaintenanceJobs(const DocumentDBMaintenanceConfig &config, std { // Called by executor thread _maintenanceController.killJobs(); - _lidSpaceCompactionHandlers.clear(); - _lidSpaceCompactionHandlers.push_back(std::make_shared<LidSpaceCompactionHandler>(_maintenanceController.getReadySubDB(), _docTypeName.getName())); - _lidSpaceCompactionHandlers.push_back(std::make_shared<LidSpaceCompactionHandler>(_maintenanceController.getRemSubDB(), _docTypeName.getName())); - _lidSpaceCompactionHandlers.push_back(std::make_shared<LidSpaceCompactionHandler>(_maintenanceController.getNotReadySubDB(), _docTypeName.getName())); MaintenanceJobsInjector::injectJobs(_maintenanceController, config, _bucketExecutor, *_feedHandler, // IHeartBeatHandler *_sessionManager, // ISessionCachePruner - _lidSpaceCompactionHandlers, *_feedHandler, // IOperationStorer _maintenanceController, // IFrozenBucketHandler _subDBs.getBucketCreateNotifier(), @@ -1026,8 +1019,8 @@ namespace { void notifyBucketsChanged(const documentmetastore::IBucketHandler &metaStore, - IBucketModifiedHandler &handler, - const vespalib::string &name) + IBucketModifiedHandler &handler, + const vespalib::string &name) { bucketdb::Guard buckets = metaStore.getBucketDB().takeGuard(); for (const auto &kv : *buckets) { diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h index d8bba30e650..dd3d821e291 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h @@ -13,7 +13,6 @@ #include "executorthreadingservice.h" #include "i_document_subdb_owner.h" #include "i_feed_handler_owner.h" -#include "i_lid_space_compaction_handler.h" #include "ifeedview.h" #include "ireplayconfig.h" #include "maintenancecontroller.h" @@ -123,7 +122,6 @@ private: std::unique_ptr<FeedHandler> _feedHandler; DocumentSubDBCollection _subDBs; MaintenanceController _maintenanceController; - ILidSpaceCompactionHandler::Vector _lidSpaceCompactionHandlers; DocumentDBJobTrackers _jobTrackers; std::shared_ptr<IBucketStateCalculator> _calc; DocumentDBMetricsUpdater _metricsUpdater; 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 bd6c09934be..3d8348f3591 100644 --- a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp @@ -6,6 +6,7 @@ #include "job_tracked_maintenance_job.h" #include "lid_space_compaction_job.h" #include "lid_space_compaction_job_take2.h" +#include "lid_space_compaction_handler.h" #include "maintenance_jobs_injector.h" #include "prune_session_cache_job.h" #include "pruneremoveddocumentsjob.h" @@ -28,7 +29,7 @@ void injectLidSpaceCompactionJobs(MaintenanceController &controller, const DocumentDBMaintenanceConfig &config, storage::spi::BucketExecutor & bucketExecutor, - const ILidSpaceCompactionHandler::Vector &lscHandlers, + ILidSpaceCompactionHandler::Vector lscHandlers, IOperationStorer &opStorer, IFrozenBucketHandler &fbHandler, const IJobTracker::SP &tracker, @@ -117,7 +118,6 @@ MaintenanceJobsInjector::injectJobs(MaintenanceController &controller, storage::spi::BucketExecutor & bucketExecutor, IHeartBeatHandler &hbHandler, matching::ISessionCachePruner &scPruner, - const ILidSpaceCompactionHandler::Vector &lscHandlers, IOperationStorer &opStorer, IFrozenBucketHandler &fbHandler, bucketdb::IBucketCreateNotifier &bucketCreateNotifier, @@ -146,8 +146,12 @@ MaintenanceJobsInjector::injectJobs(MaintenanceController &controller, controller.registerJobInMasterThread(trackJob(jobTrackers.getRemovedDocumentsPrune(), std::move(pruneRDjob))); if (!config.getLidSpaceCompactionConfig().isDisabled()) { - injectLidSpaceCompactionJobs(controller, config, bucketExecutor, lscHandlers, opStorer, fbHandler, - jobTrackers.getLidSpaceCompact(), diskMemUsageNotifier, + ILidSpaceCompactionHandler::Vector lidSpaceCompactionHandlers; + lidSpaceCompactionHandlers.push_back(std::make_shared<LidSpaceCompactionHandler>(controller.getReadySubDB(), docTypeName)); + lidSpaceCompactionHandlers.push_back(std::make_shared<LidSpaceCompactionHandler>(controller.getRemSubDB(), docTypeName)); + lidSpaceCompactionHandlers.push_back(std::make_shared<LidSpaceCompactionHandler>(controller.getNotReadySubDB(), docTypeName)); + injectLidSpaceCompactionJobs(controller, config, bucketExecutor, std::move(lidSpaceCompactionHandlers), + opStorer, fbHandler, jobTrackers.getLidSpaceCompact(), diskMemUsageNotifier, clusterStateChangedNotifier, calc, bucketSpace); } diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h index 86049736a38..563ef227fcf 100644 --- a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h +++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h @@ -37,7 +37,6 @@ struct MaintenanceJobsInjector storage::spi::BucketExecutor & bucketExecutor, IHeartBeatHandler &hbHandler, matching::ISessionCachePruner &scPruner, - const ILidSpaceCompactionHandler::Vector &lscHandlers, IOperationStorer &opStorer, IFrozenBucketHandler &fbHandler, bucketdb::IBucketCreateNotifier &bucketCreateNotifier, |