aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-05-05 16:45:22 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-05-09 21:21:18 +0000
commit80fe3c5523f5e5699c288a4301ac6d04d77bf665 (patch)
tree5693aa2f8738b078bbd7bc9f770d6c0a652eb013
parent82f6ea0f659f75171992a53b3608705e1a7c2234 (diff)
GC legacy prune removed job.
-rw-r--r--searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp51
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp30
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h13
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp24
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp103
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h46
11 files changed, 29 insertions, 251 deletions
diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp
index a177f3f763e..ef54aafcec2 100644
--- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp
+++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp
@@ -47,7 +47,7 @@ JobTestBase::init(uint32_t allowedLidBloat,
{
_handler = std::make_shared<MyHandler>(maxOutstandingMoveOps != MAX_OUTSTANDING_MOVE_OPS, true);
DocumentDBLidSpaceCompactionConfig compactCfg(interval, allowedLidBloat, allowedLidBloatFactor,
- REMOVE_BATCH_BLOCK_RATE, REMOVE_BLOCK_RATE, false, true);
+ REMOVE_BATCH_BLOCK_RATE, REMOVE_BLOCK_RATE, false);
BlockableMaintenanceJobConfig blockableCfg(resourceLimitFactor, maxOutstandingMoveOps);
_job.reset();
diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
index e73fa739fbb..deaeec07db7 100644
--- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
@@ -842,7 +842,7 @@ void
MaintenanceControllerFixture::injectMaintenanceJobs()
{
if (_injectDefaultJobs) {
- MaintenanceJobsInjector::injectJobs(_mc, *_mcCfg, _bucketExecutor, _fh, _gsp, _fh, _mc,
+ MaintenanceJobsInjector::injectJobs(_mc, *_mcCfg, _bucketExecutor, _fh, _gsp, _fh,
_bucketCreateNotifier, makeBucketSpace(), _fh, _fh,
_bmc, _clusterStateHandler, _bucketHandler, _calc, _diskMemUsageNotifier,
_jobTrackers, _readyAttributeManager, _notReadyAttributeManager,
@@ -940,52 +940,7 @@ TEST_F("require that document pruner is active", MaintenanceControllerFixture)
ASSERT_TRUE(f._executor.waitIdle(TIMEOUT));
EXPECT_EQUAL(10u, f._removed.getNumUsedLids());
EXPECT_EQUAL(10u, f._removed.getDocumentCount());
- MyFrozenBucket::UP frozen3(new MyFrozenBucket(f._mc, bucketId3));
- f.setPruneConfig(DocumentDBPruneConfig(200ms, 900s, false));
- for (uint32_t i = 0; i < 6; ++i) {
- std::this_thread::sleep_for(100ms);
- ASSERT_TRUE(f._executor.waitIdle(TIMEOUT));
- if (f._removed.getNumUsedLids() != 10u)
- break;
- }
- EXPECT_EQUAL(10u, f._removed.getNumUsedLids());
- EXPECT_EQUAL(10u, f._removed.getDocumentCount());
- frozen3.reset();
- for (uint32_t i = 0; i < 600; ++i) {
- std::this_thread::sleep_for(100ms);
- ASSERT_TRUE(f._executor.waitIdle(TIMEOUT));
- if (f._removed.getNumUsedLids() != 10u)
- break;
- }
- EXPECT_EQUAL(5u, f._removed.getNumUsedLids());
- EXPECT_EQUAL(5u, f._removed.getDocumentCount());
-}
-
-TEST_F("require that document pruner v2 is active", MaintenanceControllerFixture)
-{
- uint64_t tshz = 1000000;
- uint64_t now = static_cast<uint64_t>(time(nullptr)) * tshz;
- Timestamp remTime(static_cast<Timestamp::Type>(now - 3600 * tshz));
- Timestamp keepTime(static_cast<Timestamp::Type>(now + 3600 * tshz));
- f._builder.createDocs(1, 1, 4); // 3 docs
- f._builder.createDocs(2, 4, 6); // 2 docs
- test::UserDocuments keepDocs(f._builder.getDocs());
- f.removeDocs(keepDocs, keepTime);
- f._builder.clearDocs();
- f._builder.createDocs(3, 6, 8); // 2 docs
- f._builder.createDocs(4, 8, 11); // 3 docs
- test::UserDocuments removeDocs(f._builder.getDocs());
- BucketId bucketId3(removeDocs.getBucket(3));
- f.removeDocs(removeDocs, remTime);
- f.notifyClusterStateChanged();
- EXPECT_TRUE(f._executor.isIdle());
- EXPECT_EQUAL(10u, f._removed.getNumUsedLids());
- EXPECT_EQUAL(10u, f._removed.getDocumentCount());
- f.startMaintenance();
- ASSERT_TRUE(f._executor.waitIdle(TIMEOUT));
- EXPECT_EQUAL(10u, f._removed.getNumUsedLids());
- EXPECT_EQUAL(10u, f._removed.getDocumentCount());
- f.setPruneConfig(DocumentDBPruneConfig(200ms, 900s, true));
+ f.setPruneConfig(DocumentDBPruneConfig(200ms, 900s));
for (uint32_t i = 0; i < 600; ++i) {
std::this_thread::sleep_for(100ms);
ASSERT_TRUE(f._executor.waitIdle(TIMEOUT));
@@ -1213,7 +1168,7 @@ TEST_F("require that maintenance jobs are run by correct executor", MaintenanceC
void
assertPruneRemovedDocumentsConfig(vespalib::duration expDelay, vespalib::duration expInterval, vespalib::duration interval, MaintenanceControllerFixture &f)
{
- f.setPruneConfig(DocumentDBPruneConfig(interval, 1000s, true));
+ f.setPruneConfig(DocumentDBPruneConfig(interval, 1000s));
const auto *job = findJob(f._mc.getJobList(), "prune_removed_documents.searchdocument");
EXPECT_EQUAL(expDelay, job->getJob().getDelay());
EXPECT_EQUAL(expInterval, job->getJob().getInterval());
diff --git a/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt
index 7d4d6868d21..73b9c17398a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt
@@ -80,7 +80,6 @@ vespa_add_library(searchcore_server STATIC
proton_disk_layout.cpp
proton_thread_pools_explorer.cpp
prune_session_cache_job.cpp
- pruneremoveddocumentsjob.cpp
pruneremoveddocumentsjob_v2.cpp
putdonecontext.cpp
reconfig_params.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp b/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp
index 10979ebc6e2..3bcd9f3d85f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp
@@ -7,16 +7,15 @@ namespace proton {
constexpr vespalib::duration MAX_DELAY_SEC = 300s;
DocumentDBPruneConfig::DocumentDBPruneConfig() noexcept
- : DocumentDBPruneConfig(21600s, 1209600s, false)
+ : DocumentDBPruneConfig(21600s, 1209600s)
{
}
DocumentDBPruneConfig::
-DocumentDBPruneConfig(vespalib::duration interval, vespalib::duration age, bool useBucketExecutor) noexcept
+DocumentDBPruneConfig(vespalib::duration interval, vespalib::duration age) noexcept
: _delay(std::min(MAX_DELAY_SEC, interval)),
_interval(interval),
- _age(age),
- _useBucketExecutor(useBucketExecutor)
+ _age(age)
{
}
@@ -25,8 +24,7 @@ DocumentDBPruneConfig::operator==(const DocumentDBPruneConfig &rhs) const noexce
{
return (_delay == rhs._delay) &&
(_interval == rhs._interval) &&
- (_age == rhs._age) &&
- (_useBucketExecutor == rhs._useBucketExecutor);
+ (_age == rhs._age);
}
DocumentDBHeartBeatConfig::DocumentDBHeartBeatConfig() noexcept
@@ -52,8 +50,7 @@ DocumentDBLidSpaceCompactionConfig::DocumentDBLidSpaceCompactionConfig() noexcep
_allowedLidBloatFactor(1.0),
_remove_batch_block_rate(0.5),
_remove_block_rate(100),
- _disabled(false),
- _useBucketExecutor(false)
+ _disabled(false)
{
}
@@ -62,16 +59,14 @@ DocumentDBLidSpaceCompactionConfig::DocumentDBLidSpaceCompactionConfig(vespalib:
double allowedLidBloatFactor,
double remove_batch_block_rate,
double remove_block_rate,
- bool disabled,
- bool useBucketExecutor) noexcept
+ bool disabled) noexcept
: _delay(std::min(MAX_DELAY_SEC, interval)),
_interval(interval),
_allowedLidBloat(allowedLidBloat),
_allowedLidBloatFactor(allowedLidBloatFactor),
_remove_batch_block_rate(remove_batch_block_rate),
_remove_block_rate(remove_block_rate),
- _disabled(disabled),
- _useBucketExecutor(useBucketExecutor)
+ _disabled(disabled)
{
}
@@ -113,19 +108,16 @@ BlockableMaintenanceJobConfig::operator==(const BlockableMaintenanceJobConfig &r
}
BucketMoveConfig::BucketMoveConfig() noexcept
- : _maxDocsToMovePerBucket(1),
- _useBucketExecutor(false)
+ : _maxDocsToMovePerBucket(1)
{}
-BucketMoveConfig::BucketMoveConfig(uint32_t maxDocsToMovePerBucket, bool useBucketExecutor_) noexcept
- : _maxDocsToMovePerBucket(maxDocsToMovePerBucket),
- _useBucketExecutor(useBucketExecutor_)
+BucketMoveConfig::BucketMoveConfig(uint32_t maxDocsToMovePerBucket) noexcept
+ : _maxDocsToMovePerBucket(maxDocsToMovePerBucket)
{}
bool
BucketMoveConfig::operator==(const BucketMoveConfig &rhs) const noexcept
{
- return _maxDocsToMovePerBucket == rhs._maxDocsToMovePerBucket &&
- _useBucketExecutor == rhs._useBucketExecutor;
+ return _maxDocsToMovePerBucket == rhs._maxDocsToMovePerBucket;
}
DocumentDBMaintenanceConfig::DocumentDBMaintenanceConfig() noexcept
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h b/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h
index ed6494c117d..a42bf65ce88 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h
@@ -15,17 +15,15 @@ private:
vespalib::duration _delay;
vespalib::duration _interval;
vespalib::duration _age;
- bool _useBucketExecutor;
public:
DocumentDBPruneConfig() noexcept;
- DocumentDBPruneConfig(vespalib::duration interval, vespalib::duration age, bool useBucketExecutor) noexcept;
+ DocumentDBPruneConfig(vespalib::duration interval, vespalib::duration age) noexcept;
bool operator==(const DocumentDBPruneConfig &rhs) const noexcept;
vespalib::duration getDelay() const noexcept { return _delay; }
vespalib::duration getInterval() const noexcept { return _interval; }
vespalib::duration getAge() const noexcept { return _age; }
- bool useBucketExecutor() const noexcept { return _useBucketExecutor; }
};
using DocumentDBPruneRemovedDocumentsConfig = DocumentDBPruneConfig;
@@ -53,7 +51,6 @@ private:
double _remove_batch_block_rate;
double _remove_block_rate;
bool _disabled;
- bool _useBucketExecutor;
public:
DocumentDBLidSpaceCompactionConfig() noexcept;
@@ -62,8 +59,7 @@ public:
double allowwedLidBloatFactor,
double remove_batch_block_rate,
double remove_block_rate,
- bool disabled,
- bool useBucketExecutor) noexcept;
+ bool disabled) noexcept;
static DocumentDBLidSpaceCompactionConfig createDisabled() noexcept;
bool operator==(const DocumentDBLidSpaceCompactionConfig &rhs) const noexcept;
@@ -74,7 +70,6 @@ public:
double get_remove_batch_block_rate() const noexcept { return _remove_batch_block_rate; }
double get_remove_block_rate() const noexcept { return _remove_block_rate; }
bool isDisabled() const noexcept { return _disabled; }
- bool useBucketExecutor() const noexcept { return _useBucketExecutor; }
};
class BlockableMaintenanceJobConfig {
@@ -94,13 +89,11 @@ public:
class BucketMoveConfig {
public:
BucketMoveConfig() noexcept;
- BucketMoveConfig(uint32_t _maxDocsToMovePerBucket, bool useBucketExecutor) noexcept;
+ BucketMoveConfig(uint32_t _maxDocsToMovePerBucket) noexcept;
bool operator==(const BucketMoveConfig &rhs) const noexcept;
uint32_t getMaxDocsToMovePerBucket() const noexcept { return _maxDocsToMovePerBucket; }
- bool useBucketExecutor() const noexcept { return _useBucketExecutor; }
private:
uint32_t _maxDocsToMovePerBucket;
- bool _useBucketExecutor;
};
class DocumentDBMaintenanceConfig
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
index 3f3fad55bd6..3b4bf320b70 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
@@ -952,7 +952,6 @@ DocumentDB::injectMaintenanceJobs(const DocumentDBMaintenanceConfig &config, std
*_feedHandler, // IHeartBeatHandler
*_sessionManager, // ISessionCachePruner
*_feedHandler, // IOperationStorer
- _maintenanceController, // IFrozenBucketHandler
_subDBs.getBucketCreateNotifier(),
_bucketSpace,
*_feedHandler, // IPruneRemovedDocumentsHandler
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
index feab911441a..8d513fde62f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
@@ -133,8 +133,7 @@ buildMaintenanceConfig(const BootstrapConfig::SP &bootstrapConfig,
}
return std::make_shared<DocumentDBMaintenanceConfig>(
DocumentDBPruneConfig(pruneRemovedDocumentsInterval,
- pruneRemovedDocumentsAge,
- proton.pruneremoveddocuments.usebucketexecutor),
+ pruneRemovedDocumentsAge),
DocumentDBHeartBeatConfig(),
vespalib::from_s(proton.grouping.sessionmanager.pruning.interval),
visibilityDelay,
@@ -144,8 +143,7 @@ buildMaintenanceConfig(const BootstrapConfig::SP &bootstrapConfig,
proton.lidspacecompaction.allowedlidbloatfactor,
proton.lidspacecompaction.removebatchblockrate,
proton.lidspacecompaction.removeblockrate,
- isDocumentTypeGlobal,
- proton.lidspacecompaction.usebucketexecutor),
+ isDocumentTypeGlobal),
AttributeUsageFilterConfig(
proton.writefilter.attribute.enumstorelimit,
proton.writefilter.attribute.multivaluelimit),
@@ -154,7 +152,7 @@ buildMaintenanceConfig(const BootstrapConfig::SP &bootstrapConfig,
proton.maintenancejobs.resourcelimitfactor,
proton.maintenancejobs.maxoutstandingmoveops),
DocumentDBFlushConfig(proton.index.maxflushed,proton.index.maxflushedretired),
- BucketMoveConfig(proton.bucketmove.maxdocstomoveperbucket, proton.bucketmove.usebucketexecutor));
+ BucketMoveConfig(proton.bucketmove.maxdocstomoveperbucket));
}
template<typename T>
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 e713335be4b..6bc1907f367 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
@@ -7,7 +7,6 @@
#include "lid_space_compaction_handler.h"
#include "maintenance_jobs_injector.h"
#include "prune_session_cache_job.h"
-#include "pruneremoveddocumentsjob.h"
#include "pruneremoveddocumentsjob_v2.h"
#include "sample_attribute_usage_job.h"
#include <vespa/searchcore/proton/attribute/attribute_config_inspector.h>
@@ -76,7 +75,6 @@ MaintenanceJobsInjector::injectJobs(MaintenanceController &controller,
IHeartBeatHandler &hbHandler,
matching::ISessionCachePruner &scPruner,
IOperationStorer &opStorer,
- IFrozenBucketHandler &fbHandler,
bucketdb::IBucketCreateNotifier &bucketCreateNotifier,
document::BucketSpace bucketSpace,
IPruneRemovedDocumentsHandler &prdHandler,
@@ -98,20 +96,14 @@ MaintenanceJobsInjector::injectJobs(MaintenanceController &controller,
const auto & docTypeName = controller.getDocTypeName().getName();
const MaintenanceDocumentSubDB &mRemSubDB(controller.getRemSubDB());
- if (config.getPruneRemovedDocumentsConfig().useBucketExecutor()) {
- controller.registerJobInMasterThread(
- trackJob(jobTrackers.getRemovedDocumentsPrune(),
- PruneRemovedDocumentsJobV2::create(config.getPruneRemovedDocumentsConfig(), controller.retainDB(),
- *mRemSubDB.meta_store(), mRemSubDB.sub_db_id(), bucketSpace,
- docTypeName, prdHandler, controller.masterThread(),
- bucketExecutor)));
- } else {
- controller.registerJobInMasterThread(
- trackJob(jobTrackers.getRemovedDocumentsPrune(),
- std::make_unique<PruneRemovedDocumentsJob>(config.getPruneRemovedDocumentsConfig(),
- *mRemSubDB.meta_store(), mRemSubDB.sub_db_id(),
- docTypeName, prdHandler, fbHandler)));
- }
+
+ controller.registerJobInMasterThread(
+ trackJob(jobTrackers.getRemovedDocumentsPrune(),
+ PruneRemovedDocumentsJobV2::create(config.getPruneRemovedDocumentsConfig(), controller.retainDB(),
+ *mRemSubDB.meta_store(), mRemSubDB.sub_db_id(), bucketSpace,
+ docTypeName, prdHandler, controller.masterThread(),
+ bucketExecutor)));
+
if (!config.getLidSpaceCompactionConfig().isDisabled()) {
ILidSpaceCompactionHandler::Vector lidSpaceCompactionHandlers;
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 fb7117d2e66..cbc85613e1e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h
@@ -38,7 +38,6 @@ struct MaintenanceJobsInjector
IHeartBeatHandler &hbHandler,
matching::ISessionCachePruner &scPruner,
IOperationStorer &opStorer,
- IFrozenBucketHandler &fbHandler,
bucketdb::IBucketCreateNotifier &bucketCreateNotifier,
document::BucketSpace bucketSpace,
IPruneRemovedDocumentsHandler &prdHandler,
diff --git a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp b/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp
deleted file mode 100644
index d8c4b6d1f71..00000000000
--- a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "pruneremoveddocumentsjob.h"
-#include "ipruneremoveddocumentshandler.h"
-#include "ifrozenbuckethandler.h"
-#include <vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.h>
-#include <vespa/searchcore/proton/documentmetastore/i_document_meta_store.h>
-#include <vespa/vespalib/util/time.h>
-
-#include <vespa/log/log.h>
-LOG_SETUP(".proton.server.pruneremoveddocumentsjob");
-
-using document::BucketId;
-using storage::spi::Timestamp;
-
-namespace proton {
-
-PruneRemovedDocumentsJob::
-PruneRemovedDocumentsJob(const DocumentDBPruneConfig &config,
- const IDocumentMetaStore &metaStore,
- uint32_t subDbId,
- const vespalib::string &docTypeName,
- IPruneRemovedDocumentsHandler &handler,
- IFrozenBucketHandler &frozenHandler)
- : BlockableMaintenanceJob("prune_removed_documents." + docTypeName,
- config.getDelay(), config.getInterval()),
- _metaStore(metaStore),
- _subDbId(subDbId),
- _cfgAgeLimit(config.getAge()),
- _docTypeName(docTypeName),
- _handler(handler),
- _frozenHandler(frozenHandler),
- _pruneLids(),
- _nextLid(1u)
-{
-}
-
-
-void
-PruneRemovedDocumentsJob::flush(DocId lowLid, DocId nextLowLid, const Timestamp ageLimit)
-{
- if (_pruneLids.empty())
- return;
- DocId docIdLimit = _metaStore.getCommittedDocIdLimit();
- PruneRemovedDocumentsOperation pruneOp(docIdLimit, _subDbId);
- LidVectorContext::SP lvCtx(pruneOp.getLidsToRemove());
- for (DocId docId : _pruneLids) {
- lvCtx->addLid(docId);
- }
- _pruneLids.clear();
- LOG(debug,
- "PruneRemovedDocumentsJob::flush called,"
- " doctype(%s)"
- " %u lids to prune,"
- " range [%u..%u) limit %u, timestamp %" PRIu64,
- _docTypeName.c_str(),
- static_cast<uint32_t>(pruneOp.getLidsToRemove()->getNumLids()),
- lowLid, nextLowLid, docIdLimit,
- static_cast<uint64_t>(ageLimit));
- _handler.performPruneRemovedDocuments(pruneOp);
-}
-
-
-bool
-PruneRemovedDocumentsJob::run()
-{
- vespalib::system_time now = vespalib::system_clock::now();
- const Timestamp ageLimit(static_cast<Timestamp::Type>
- (vespalib::count_us(now.time_since_epoch() - _cfgAgeLimit)));
- DocId lid(_nextLid);
- const DocId olid(lid);
- const DocId docIdLimit(_metaStore.getCommittedDocIdLimit());
- for (uint32_t pass = 0; pass < 10 && lid < docIdLimit; ++pass) {
- const DocId lidLimit = std::min(lid + 10000u, docIdLimit);
- for (; lid < lidLimit; ++lid) {
- if (!_metaStore.validLid(lid))
- continue;
- const RawDocumentMetaData &metaData = _metaStore.getRawMetaData(lid);
- if (metaData.getTimestamp() >= ageLimit)
- continue;
- BucketId bucket(metaData.getBucketId());
- IFrozenBucketHandler::ExclusiveBucketGuard::UP bucketGuard = _frozenHandler.acquireExclusiveBucket(bucket);
- if ( ! bucketGuard ) {
- setBlocked(BlockedReason::FROZEN_BUCKET);
- _nextLid = lid;
- flush(olid, lid, ageLimit);
- return true;
- }
- _pruneLids.push_back(lid);
- }
- if (_pruneLids.size() >= 500)
- break;
- }
- _nextLid = lid;
- flush(olid, lid, ageLimit);
- if (lid >= docIdLimit) {
- _nextLid = 1u;
- return true;
- }
- return false;
-}
-
-} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h b/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h
deleted file mode 100644
index 0f756317ab4..00000000000
--- a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include "blockable_maintenance_job.h"
-#include "document_db_maintenance_config.h"
-#include <persistence/spi/types.h>
-
-namespace proton {
-
-struct IDocumentMetaStore;
-class IPruneRemovedDocumentsHandler;
-class IFrozenBucketHandler;
-
-/**
- * Job that regularly checks whether old removed documents should be
- * forgotten.
- */
-class PruneRemovedDocumentsJob : public BlockableMaintenanceJob
-{
-private:
- const IDocumentMetaStore &_metaStore; // external ownership
- uint32_t _subDbId;
- vespalib::duration _cfgAgeLimit;
- const vespalib::string &_docTypeName;
- IPruneRemovedDocumentsHandler &_handler;
- IFrozenBucketHandler &_frozenHandler;
-
- typedef uint32_t DocId;
- std::vector<DocId> _pruneLids;
- DocId _nextLid;
-
- void flush(DocId lowLid, DocId nextLowLid, const storage::spi::Timestamp ageLimit);
-public:
- PruneRemovedDocumentsJob(const DocumentDBPruneConfig &config,
- const IDocumentMetaStore &metaStore,
- uint32_t subDbId,
- const vespalib::string &docTypeName,
- IPruneRemovedDocumentsHandler &handler,
- IFrozenBucketHandler &frozenHandler);
-
- // Implements IMaintenanceJob
- bool run() override;
-};
-
-} // namespace proton
-