aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-04-09 18:16:26 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-04-09 19:22:42 +0000
commitcff43ac7d5a296db8f49eb7277435947b9662339 (patch)
tree8b0695c17e9b6a4e9c014524556ec9b3809733d9
parenta16b5e42e5e1b5fac43983375145b08328f65f8c (diff)
Make the scope of the lidspace handler fit its lifetime.
-rw-r--r--searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp29
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.cpp11
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp12
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h1
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,