From 31fa5fa15ed23e4b5fa848604ac41626199cf390 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 10 May 2021 15:49:36 +0000 Subject: GC frozen buckets concept --- .../lid_space_compaction/lid_space_common.cpp | 7 - .../lid_space_compaction/lid_space_common.h | 9 -- .../maintenancecontroller/CMakeLists.txt | 17 --- .../frozenbucketsmap_test.cpp | 85 ------------ .../maintenancecontroller_test.cpp | 88 ------------- .../vespa/searchcore/proton/server/CMakeLists.txt | 1 - .../searchcore/proton/server/frozenbuckets.cpp | 142 --------------------- .../vespa/searchcore/proton/server/frozenbuckets.h | 100 --------------- .../proton/server/ifrozenbuckethandler.h | 31 ----- .../proton/server/maintenancecontroller.cpp | 24 +--- .../proton/server/maintenancecontroller.h | 12 +- 11 files changed, 4 insertions(+), 512 deletions(-) delete mode 100644 searchcore/src/tests/proton/documentdb/maintenancecontroller/frozenbucketsmap_test.cpp delete mode 100644 searchcore/src/vespa/searchcore/proton/server/frozenbuckets.cpp delete mode 100644 searchcore/src/vespa/searchcore/proton/server/frozenbuckets.h delete mode 100644 searchcore/src/vespa/searchcore/proton/server/ifrozenbuckethandler.h (limited to 'searchcore') diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp index cd305c51810..4b9d893eca5 100644 --- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp +++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp @@ -163,13 +163,6 @@ MyStorer::startCommit(DoneCallback) { return CommitResult(); } -IFrozenBucketHandler::ExclusiveBucketGuard::UP -MyFrozenBucketHandler::acquireExclusiveBucket(BucketId bucket) { - return (_bucket == bucket) - ? ExclusiveBucketGuard::UP() - : std::make_unique(bucket); -} - MyDocumentStore::MyDocumentStore() : _readDoc(), _readLid(0) diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h index 5063aeff347..348499d937f 100644 --- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h +++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h @@ -3,7 +3,6 @@ #pragma once #include -#include #include #include #include @@ -103,14 +102,6 @@ struct MyStorer : public IOperationStorer { CommitResult startCommit(DoneCallback) override; }; -struct MyFrozenBucketHandler : public IFrozenBucketHandler { - BucketId _bucket; - MyFrozenBucketHandler() : _bucket() {} - ExclusiveBucketGuard::UP acquireExclusiveBucket(BucketId bucket) override; - void addListener(IBucketFreezeListener *) override { } - void removeListener(IBucketFreezeListener *) override { } -}; - struct MyFeedView : public test::DummyFeedView { explicit MyFeedView(std::shared_ptr repo) : test::DummyFeedView(std::move(repo)) diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt index 0864f444ecf..7a2f741c1be 100644 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt +++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt @@ -18,20 +18,3 @@ vespa_add_executable(searchcore_maintenancecontroller_test_app TEST searchlib_test ) vespa_add_test(NAME searchcore_maintenancecontroller_test_app COMMAND searchcore_maintenancecontroller_test_app) -vespa_add_executable(searchcore_frozenbucketsmap_test_app TEST - SOURCES - frozenbucketsmap_test.cpp - DEPENDS - searchcore_server - searchcore_feedoperation - searchcore_matching - searchcore_attribute - searchcore_documentmetastore - searchcore_bucketdb - searchcore_pcommon - searchcore_persistenceengine - searchcore_grouping - searchcore_proton_metrics - searchcore_fconfig -) -vespa_add_test(NAME searchcore_frozenbucketsmap_test_app COMMAND searchcore_frozenbucketsmap_test_app) diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/frozenbucketsmap_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/frozenbucketsmap_test.cpp deleted file mode 100644 index b9a7e967b74..00000000000 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/frozenbucketsmap_test.cpp +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include -LOG_SETUP("frozenbucketsmap_test"); -#include -#include -#include - -using namespace proton; -using document::BucketId; - -class RWTask : public vespalib::Executor::Task { -public: - RWTask(FrozenBucketsMap & m, BucketId b, size_t count) : _b(b), _m(m), _count(count) {} -protected: - const BucketId _b; - FrozenBucketsMap & _m; - const size_t _count; -}; - -class Reader : public RWTask { -public: - Reader(FrozenBucketsMap & m, BucketId b, size_t count) : - RWTask(m, b, count), - numContended(0) - {} - ~Reader() { - LOG(info, "NumContended = %ld", numContended); - } - void run() override { - for (size_t i(0); i < _count; i++) { - _m.freezeBucket(_b); - if (_m.thawBucket(_b)) { - numContended++; - } - } - } - size_t numContended; -}; - -class Writer : public RWTask { -public: - Writer(FrozenBucketsMap & m, BucketId b, size_t count) : - RWTask(m, b, count), - numFailed(0), - numSucces(0) - {} - ~Writer() { - EXPECT_EQUAL(_count, numSucces + numFailed); - LOG(info, "NumSuccess = %ld, NumFailed = %ld", numSucces, numFailed); - } - void run() override { - for (size_t i(0); i < _count; i++) { - IFrozenBucketHandler::ExclusiveBucketGuard::UP guard = _m.acquireExclusiveBucket(_b); - if (guard) { - numSucces++; - } else { - numFailed++; - } - } - } - size_t numFailed; - size_t numSucces; -}; - -TEST("Race reader and writer on FrozenBucketsMap") { - FrozenBucketsMap m; - BucketId a(8, 6); - constexpr size_t NUM_READERS = 3; - constexpr size_t NUM_WRITERS = 1; - constexpr size_t READER_COUNT = 1000000; - constexpr size_t WRITER_COUNT = 1000000; - vespalib::ThreadStackExecutor executor(NUM_READERS+NUM_WRITERS, 0x10000); - for (size_t i(0); i < NUM_READERS; i++) { - EXPECT_FALSE(bool(executor.execute(std::make_unique(m, a, READER_COUNT)))); - } - for (size_t i(0); i < NUM_WRITERS; i++) { - EXPECT_FALSE(bool(executor.execute(std::make_unique(m, a, WRITER_COUNT)))); - } - executor.sync(); -} - -TEST_MAIN() -{ - TEST_RUN_ALL(); -} diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp index deaeec07db7..67a7ceeae34 100644 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp +++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp @@ -264,28 +264,6 @@ public: bool waitIdle(vespalib::duration timeout); }; - -class MyFrozenBucket -{ - IBucketFreezer &_freezer; - BucketId _bucketId; -public: - typedef std::unique_ptr UP; - - MyFrozenBucket(IBucketFreezer &freezer, - const BucketId &bucketId) - : _freezer(freezer), - _bucketId(bucketId) - { - _freezer.freezeBucket(_bucketId); - } - - ~MyFrozenBucket() - { - _freezer.thawBucket(_bucketId); - } -}; - struct MySimpleJob : public BlockableMaintenanceJob { vespalib::CountDownLatch _latch; @@ -1006,39 +984,6 @@ TEST_F("require that a split maintenance job is executed", MaintenanceController EXPECT_EQUAL(0u, myJob._latch.getCount()); } -TEST_F("require that a blocked job is unblocked and executed after thaw bucket", - MaintenanceControllerFixture) -{ - auto job1 = std::make_unique(TIMEOUT * 2, TIMEOUT * 2, 1); - MySimpleJob &myJob1 = *job1; - auto job2 = std::make_unique< MySimpleJob>(TIMEOUT * 2, TIMEOUT * 2, 0); - MySimpleJob &myJob2 = *job2; - f._mc.registerJobInMasterThread(std::move(job1)); - f._mc.registerJobInMasterThread(std::move(job2)); - f._injectDefaultJobs = false; - f.startMaintenance(); - - myJob1.block(); - EXPECT_TRUE(myJob1.isBlocked()); - EXPECT_FALSE(myJob2.isBlocked()); - IBucketFreezer &ibf = f._mc; - ibf.freezeBucket(BucketId(1)); - ibf.thawBucket(BucketId(1)); - EXPECT_TRUE(myJob1.isBlocked()); - ibf.freezeBucket(BucketId(1)); - IFrozenBucketHandler & fbh = f._mc; - // This is to simulate contention, as that is required for notification on thawed buckets. - EXPECT_FALSE(fbh.acquireExclusiveBucket(BucketId(1))); - ibf.thawBucket(BucketId(1)); - f._executor.sync(); - EXPECT_FALSE(myJob1.isBlocked()); - EXPECT_FALSE(myJob2.isBlocked()); - bool done1 = myJob1._latch.await(TIMEOUT); - EXPECT_TRUE(done1); - std::this_thread::sleep_for(2s); - EXPECT_EQUAL(0u, myJob2._runCnt); -} - TEST_F("require that blocked jobs are not executed", MaintenanceControllerFixture) { auto job = std::make_unique(200ms, 200ms, 0); @@ -1079,39 +1024,6 @@ TEST_F("require that maintenance controller state list jobs", MaintenanceControl EXPECT_EQUAL("long_running_job", allJobs[1]["name"].asString().make_string()); } -TEST("Verify FrozenBucketsMap interface") { - FrozenBucketsMap m; - BucketId a(8, 6); - { - auto guard = m.acquireExclusiveBucket(a); - EXPECT_TRUE(bool(guard)); - EXPECT_EQUAL(a, guard->getBucket()); - } - m.freezeBucket(a); - EXPECT_FALSE(m.thawBucket(a)); - m.freezeBucket(a); - { - auto guard = m.acquireExclusiveBucket(a); - EXPECT_FALSE(bool(guard)); - } - EXPECT_TRUE(m.thawBucket(a)); - m.freezeBucket(a); - m.freezeBucket(a); - m.freezeBucket(a); - { - auto guard = m.acquireExclusiveBucket(a); - EXPECT_FALSE(bool(guard)); - } - EXPECT_FALSE(m.thawBucket(a)); - EXPECT_FALSE(m.thawBucket(a)); - EXPECT_TRUE(m.thawBucket(a)); - { - auto guard = m.acquireExclusiveBucket(a); - EXPECT_TRUE(bool(guard)); - EXPECT_EQUAL(a, guard->getBucket()); - } -} - const MaintenanceJobRunner * findJob(const MaintenanceController::JobList &jobs, const vespalib::string &jobName) { diff --git a/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt index 73b7404ce31..d2ebb7a58a2 100644 --- a/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt +++ b/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt @@ -50,7 +50,6 @@ vespa_add_library(searchcore_server STATIC flushhandlerproxy.cpp forcecommitcontext.cpp forcecommitdonetask.cpp - frozenbuckets.cpp health_adapter.cpp heart_beat_job.cpp idocumentdbowner.cpp diff --git a/searchcore/src/vespa/searchcore/proton/server/frozenbuckets.cpp b/searchcore/src/vespa/searchcore/proton/server/frozenbuckets.cpp deleted file mode 100644 index 54ef4ea2da4..00000000000 --- a/searchcore/src/vespa/searchcore/proton/server/frozenbuckets.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include "frozenbuckets.h" -#include "ibucketfreezelistener.h" -#include -#include -#include - -using document::BucketId; -using vespalib::makeLambdaTask; - -namespace proton { - -FrozenBucketsMap::FrozenBucketsMap() - : _lock(), - _cond(), - _map() -{ } - -FrozenBucketsMap::~FrozenBucketsMap() { - assert(_map.empty()); -} - -void -FrozenBucketsMap::freezeBucket(BucketId bucket) { - - std::unique_lock guard(_lock); - std::pair tryVal(std::make_pair(bucket, FrozenBucket(FrozenBucket::Reader))); - - std::pair res; - for (res = _map.insert(tryVal); !res.second && (res.first->second.isExclusive()); res = _map.insert(tryVal)) { - _cond.wait(guard); - } - - if (!res.second) { - res.first->second.addReader(); - } -} - - -bool -FrozenBucketsMap::thawBucket(BucketId bucket) -{ - std::lock_guard guard(_lock); - Map::iterator it(_map.find(bucket)); - assert(it != _map.end()); - assert(it->second.hasReaders()); - bool isLastAndContended(false); - if (it->second.isLast()) { - if (it->second.getNotifyWriter()) { - isLastAndContended = true; - } - _map.erase(it); - _cond.notify_all(); - } else { - it->second.removeReader(); - } - return isLastAndContended; -} - - -IFrozenBucketHandler::ExclusiveBucketGuard::UP -FrozenBucketsMap::acquireExclusiveBucket(document::BucketId bucket) -{ - std::lock_guard guard(_lock); - Map::iterator it(_map.find(bucket)); - if (it != _map.end()) { - assert(it->second.hasReaders()); - it->second.setNotifyWriter(); - return ExclusiveBucketGuard::UP(); - } - _map[bucket] = FrozenBucket(FrozenBucket::Writer); - return std::make_unique(*this, bucket); -} - -void -FrozenBucketsMap::releaseExclusiveBucket(document::BucketId bucket) -{ - std::lock_guard guard(_lock); - Map::const_iterator it(_map.find(bucket)); - assert ((it != _map.end()) && (it->second.isExclusive())); - _map.erase(it); - _cond.notify_all(); -} - -FrozenBuckets::FrozenBuckets(IThreadService &masterThread) : - _frozen(), - _masterThread(masterThread), - _listeners() -{ -} - -FrozenBuckets::~FrozenBuckets() -{ - assert(_listeners.empty()); -} - -IFrozenBucketHandler::ExclusiveBucketGuard::UP -FrozenBuckets::acquireExclusiveBucket(document::BucketId bucket) { - return _frozen.acquireExclusiveBucket(bucket); -} - -void -FrozenBuckets::notifyThawed(document::BucketId bucket) { - assert(_masterThread.isCurrentThread()); - for (auto &listener : _listeners) { - listener->notifyThawedBucket(bucket); - } -} - -void -FrozenBuckets::freezeBucket(BucketId bucket) -{ - _frozen.freezeBucket(bucket); -} - -void -FrozenBuckets::thawBucket(BucketId bucket) -{ - if (_frozen.thawBucket(bucket)) { - _masterThread.execute(makeLambdaTask([this, bucket]() { notifyThawed(bucket); })); - } -} - -void -FrozenBuckets::addListener(IBucketFreezeListener *listener) -{ - // assert(_masterThread.isCurrentThread()); - _listeners.push_back(listener); -} - -void -FrozenBuckets::removeListener(IBucketFreezeListener *listener) -{ - // assert(_masterThread.isCurrentThread()); - auto it = std::find(_listeners.begin(), _listeners.end(), listener); - if (it != _listeners.end()) { - _listeners.erase(it); - } -} - -} // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/frozenbuckets.h b/searchcore/src/vespa/searchcore/proton/server/frozenbuckets.h deleted file mode 100644 index 339bb7fa5d0..00000000000 --- a/searchcore/src/vespa/searchcore/proton/server/frozenbuckets.h +++ /dev/null @@ -1,100 +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 "ifrozenbuckethandler.h" -#include "ibucketfreezer.h" -#include -#include -#include -#include -#include - - -namespace searchcorespi { namespace index {struct IThreadService; }} - -namespace proton { - -class IBucketFreezeListener; - -/** - * Controls read and write access to buckets. - */ -class FrozenBucketsMap { -public: - FrozenBucketsMap(); - ~FrozenBucketsMap(); - IFrozenBucketHandler::ExclusiveBucketGuard::UP acquireExclusiveBucket(document::BucketId bucket); - void freezeBucket(document::BucketId bucket); - // Returns true if it was the last one and it was contended. - bool thawBucket(document::BucketId bucket); - class ExclusiveBucketGuard : public IFrozenBucketHandler::ExclusiveBucketGuard { - public: - ExclusiveBucketGuard(const ExclusiveBucketGuard &) = delete; - ExclusiveBucketGuard(ExclusiveBucketGuard &&) = delete; - ExclusiveBucketGuard & operator=(const ExclusiveBucketGuard &) = delete; - ExclusiveBucketGuard & operator=(ExclusiveBucketGuard &&) = delete; - - ExclusiveBucketGuard(FrozenBucketsMap & handler, document::BucketId & bucketId) - : IFrozenBucketHandler::ExclusiveBucketGuard(bucketId), - _handler(handler) - { } - ~ExclusiveBucketGuard() { _handler.releaseExclusiveBucket(getBucket());} - private: - FrozenBucketsMap & _handler; - }; -private: - void releaseExclusiveBucket(document::BucketId bucket); - class FrozenBucket { - public: - enum Type {Reader, Writer}; - explicit FrozenBucket(Type type=Reader) : _refCount((type==Reader) ? 1 : -1), _notifyWriter(false) { } - ~FrozenBucket() { assert((_refCount == -1) || (_refCount == 1));} - void setNotifyWriter() { _notifyWriter = true; } - bool getNotifyWriter() const { return _notifyWriter; } - bool isLast() const { return _refCount == 1; } - bool isExclusive() const { return _refCount == -1; } - bool hasReaders() const { return _refCount >= 1; } - void addReader() { - assert(_refCount >= 1); - _refCount++; - } - void removeReader() { - assert(_refCount > 1); - _refCount--; - } - private: - int32_t _refCount; - bool _notifyWriter; - }; - typedef std::map Map; - std::mutex _lock; - std::condition_variable _cond; - Map _map; -}; - -/** - * Class that remembers which buckets are frozen and notifies all - * registered listeners on bucket frozenness changes. - */ -class FrozenBuckets : public IFrozenBucketHandler, - public IBucketFreezer -{ - using IThreadService = searchcorespi::index::IThreadService; - FrozenBucketsMap _frozen; - IThreadService &_masterThread; - std::vector _listeners; - - void notifyThawed(document::BucketId bucket); -public: - FrozenBuckets(IThreadService &masterThread); - virtual ~FrozenBuckets(); - - virtual ExclusiveBucketGuard::UP acquireExclusiveBucket(document::BucketId bucket) override; - virtual void freezeBucket(document::BucketId bucket) override; - virtual void thawBucket(document::BucketId bucket) override; - virtual void addListener(IBucketFreezeListener *listener) override; - virtual void removeListener(IBucketFreezeListener *listener) override; -}; - -} // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/ifrozenbuckethandler.h b/searchcore/src/vespa/searchcore/proton/server/ifrozenbuckethandler.h deleted file mode 100644 index bcd671c95b9..00000000000 --- a/searchcore/src/vespa/searchcore/proton/server/ifrozenbuckethandler.h +++ /dev/null @@ -1,31 +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 -#include - -namespace proton { - -class IBucketFreezeListener; - -class IFrozenBucketHandler -{ -public: - class ExclusiveBucketGuard { - public: - typedef std::unique_ptr UP; - ExclusiveBucketGuard(document::BucketId bucketId) : _bucketId(bucketId) { } - virtual ~ExclusiveBucketGuard() { } - document::BucketId getBucket() const { return _bucketId; } - private: - document::BucketId _bucketId; - }; - - virtual ~IFrozenBucketHandler() = default; - virtual ExclusiveBucketGuard::UP acquireExclusiveBucket(document::BucketId bucket) = 0; - virtual void addListener(IBucketFreezeListener *listener) = 0; - virtual void removeListener(IBucketFreezeListener *listener) = 0; -}; - -} diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp index 3b4526e6f7c..011b6cb4b07 100644 --- a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp @@ -42,8 +42,7 @@ MaintenanceController::MaintenanceController(IThreadService &masterThread, vespalib::Executor & defaultExecutor, MonitoredRefCount & refCount, const DocTypeName &docTypeName) - : IBucketFreezeListener(), - _masterThread(masterThread), + : _masterThread(masterThread), _defaultExecutor(defaultExecutor), _refCount(refCount), _readySubDB(), @@ -51,19 +50,15 @@ MaintenanceController::MaintenanceController(IThreadService &masterThread, _notReadySubDB(), _periodicTimer(), _config(), - _frozenBuckets(masterThread), _state(State::INITIALIZING), _docTypeName(docTypeName), _jobs(), _jobsLock() -{ - _frozenBuckets.addListener(this); // forward freeze/thaw to bmc -} +{ } MaintenanceController::~MaintenanceController() { kill(); - _frozenBuckets.removeListener(this); } void @@ -235,19 +230,4 @@ MaintenanceController::syncSubDBs(const MaintenanceDocumentSubDB &readySubDB, } } - -void -MaintenanceController::notifyThawedBucket(const BucketId &bucket) -{ - (void) bucket; - // No need to take _jobsLock as modification of _jobs also happens in master write thread. - for (const auto &jw : _jobs) { - IBlockableMaintenanceJob *job = jw->getJob().asBlockable(); - if (job && job->isBlocked()) { - job->unBlock(IBlockableMaintenanceJob::BlockedReason::FROZEN_BUCKET); - } - } -} - - } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h index 6415c51eeed..049238ae193 100644 --- a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h +++ b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h @@ -4,8 +4,6 @@ #include "maintenancedocumentsubdb.h" #include "i_maintenance_job.h" -#include "frozenbuckets.h" -#include "ibucketfreezelistener.h" #include #include #include @@ -29,7 +27,7 @@ class MonitoredRefCount; * and a set of maintenance jobs for a document db. * The maintenance jobs are independent of the controller. */ -class MaintenanceController : public IBucketFreezeListener +class MaintenanceController { public: using IThreadService = searchcorespi::index::IThreadService; @@ -40,7 +38,7 @@ public: MaintenanceController(IThreadService &masterThread, vespalib::Executor & defaultExecutor, MonitoredRefCount & refCount, const DocTypeName &docTypeName); - ~MaintenanceController() override; + ~MaintenanceController(); void registerJobInMasterThread(IMaintenanceJob::UP job); void registerJobInDefaultPool(IMaintenanceJob::UP job); @@ -63,10 +61,6 @@ public: void kill(); - operator IBucketFreezer &() { return _frozenBuckets; } - operator const IFrozenBucketHandler &() const { return _frozenBuckets; } - operator IFrozenBucketHandler &() { return _frozenBuckets; } - bool getStarted() const { return _state >= State::STARTED; } bool getStopping() const { return _state == State::STOPPING; } bool getPaused() const { return _state == State::PAUSED; } @@ -89,7 +83,6 @@ private: MaintenanceDocumentSubDB _notReadySubDB; std::unique_ptr _periodicTimer; DocumentDBMaintenanceConfigSP _config; - FrozenBuckets _frozenBuckets; State _state; const DocTypeName &_docTypeName; JobList _jobs; @@ -97,7 +90,6 @@ private: void addJobsToPeriodicTimer(); void restart(); - void notifyThawedBucket(const document::BucketId &bucket) override; void performHoldJobs(JobList jobs); void registerJob(vespalib::Executor & executor, IMaintenanceJob::UP job); }; -- cgit v1.2.3