diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-15 23:30:30 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-15 23:30:30 +0000 |
commit | bfa4fbddaa847c3fe593485951a528b60c5f6412 (patch) | |
tree | 18a242070466c72f3077e5ae16c3193029e25a32 | |
parent | b275087c2a110a1dc9aca0662f7ed01e2e7928ec (diff) |
Use forward declarations to reduce amount of included code.
10 files changed, 35 insertions, 22 deletions
diff --git a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp index 252edb5dd7f..facdb2cadfa 100644 --- a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp +++ b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp @@ -5,6 +5,7 @@ #include <vespa/document/update/documentupdate.h> #include <vespa/document/fieldset/fieldsets.h> #include <vespa/document/fieldvalue/document.h> +#include <vespa/vespalib/util/idestructorcallback.h> namespace storage::spi { @@ -29,4 +30,10 @@ AbstractPersistenceProvider::getModifiedBuckets(BucketSpace) const return BucketIdListResult(list); } +std::unique_ptr<vespalib::IDestructorCallback> +AbstractPersistenceProvider::register_executor(std::shared_ptr<BucketExecutor>) +{ + return {}; +} + } diff --git a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h index 6bb24f582e3..5023febe9a2 100644 --- a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h +++ b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h @@ -49,7 +49,7 @@ public: */ BucketIdListResult getModifiedBuckets(BucketSpace bucketSpace) const override; - std::unique_ptr<vespalib::IDestructorCallback> register_executor(std::shared_ptr<BucketExecutor>) override { return {}; } + std::unique_ptr<vespalib::IDestructorCallback> register_executor(std::shared_ptr<BucketExecutor>) override; }; } diff --git a/persistence/src/vespa/persistence/spi/persistenceprovider.h b/persistence/src/vespa/persistence/spi/persistenceprovider.h index 9ba752c2579..eeb0f472f4a 100644 --- a/persistence/src/vespa/persistence/spi/persistenceprovider.h +++ b/persistence/src/vespa/persistence/spi/persistenceprovider.h @@ -10,8 +10,6 @@ #include "selection.h" #include "clusterstate.h" #include "operationcomplete.h" -#include "bucketexecutor.h" -#include <vespa/vespalib/util/idestructorcallback.h> namespace document { class FieldSet; } namespace vespalib { class IDestructorCallback; } @@ -19,6 +17,8 @@ namespace vespalib { class IDestructorCallback; } namespace storage::spi { class IResourceUsageListener; +class BucketTask; +class BucketExecutor; /** * This interface is the basis for a persistence provider in Vespa. A @@ -384,7 +384,7 @@ struct PersistenceProvider * Register a listener for updates to resource usage. * The listener is deregistered when the returned object is destroyed. */ - virtual std::unique_ptr<vespalib::IDestructorCallback> register_resource_usage_listener(IResourceUsageListener& listener) = 0; + [[nodiscard]] virtual std::unique_ptr<vespalib::IDestructorCallback> register_resource_usage_listener(IResourceUsageListener& listener) = 0; /** * Provides an execute interface that can be used by the provider to execute tasks while bucket guarantees are upheld. diff --git a/searchcore/src/apps/proton/proton.cpp b/searchcore/src/apps/proton/proton.cpp index 171579ad693..f01f3486a79 100644 --- a/searchcore/src/apps/proton/proton.cpp +++ b/searchcore/src/apps/proton/proton.cpp @@ -6,6 +6,7 @@ #include <vespa/vespalib/util/signalhandler.h> #include <vespa/vespalib/util/programoptions.h> #include <vespa/vespalib/io/fileutil.h> +#include <vespa/vespalib/util/exceptions.h> #include <vespa/config/common/exceptions.h> #include <vespa/fastos/app.h> #include <iostream> diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h index bf07aaa82d8..8e01e67719a 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h @@ -2,19 +2,16 @@ #pragma once -#include <vespa/persistence/spi/abstractpersistenceprovider.h> +#include <vespa/document/bucket/bucketspace.h> -namespace proton -{ +namespace storage::spi { class ClusterState; } + +namespace proton { class IPersistenceEngineOwner { public: - virtual - ~IPersistenceEngineOwner() - { - } - + virtual ~IPersistenceEngineOwner() = default; virtual void setClusterState(document::BucketSpace bucketSpace, const storage::spi::ClusterState &calc) = 0; }; diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h index 7e3bb903f72..1af6c2e60bc 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h @@ -4,13 +4,14 @@ #include "bucket_guard.h" #include "i_document_retriever.h" #include "resulthandler.h" -#include <vespa/persistence/spi/abstractpersistenceprovider.h> #include <vespa/searchcore/proton/common/feedtoken.h> namespace document { class Document; class DocumentUpdate; } +namespace storage::spi { class ClusterState; } + namespace proton { /** diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h index 6712a35bd65..cb6fb28647e 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/persistence/spi/abstractpersistenceprovider.h> +#include <vespa/persistence/spi/result.h> namespace proton { @@ -12,9 +12,9 @@ public: virtual void handle(const ResultType &result) = 0; }; -typedef IResultHandler<storage::spi::BucketIdListResult> IBucketIdListResultHandler; -typedef IResultHandler<storage::spi::BucketInfoResult> IBucketInfoResultHandler; -typedef IResultHandler<storage::spi::Result> IGenericResultHandler; +using IBucketIdListResultHandler = IResultHandler<storage::spi::BucketIdListResult>; +using IBucketInfoResultHandler = IResultHandler<storage::spi::BucketInfoResult>; +using IGenericResultHandler = IResultHandler<storage::spi::Result>; } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.cpp b/searchcore/src/vespa/searchcore/proton/server/proton.cpp index 3f7cf14afbe..7d97214244d 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp @@ -25,6 +25,7 @@ #include <vespa/searchcore/proton/reference/document_db_reference_registry.h> #include <vespa/searchcore/proton/summaryengine/docsum_by_slime.h> #include <vespa/searchcore/proton/summaryengine/summaryengine.h> +#include <vespa/searchcore/proton/persistenceengine/persistenceengine.h> #include <vespa/searchlib/common/packets.h> #include <vespa/searchlib/transactionlog/trans_log_server_explorer.h> #include <vespa/searchlib/transactionlog/translogserverapp.h> @@ -929,4 +930,10 @@ Proton::getDocumentDBReferenceRegistry() const return _documentDBReferenceRegistry; } +storage::spi::PersistenceProvider & +Proton::getPersistence() +{ + return *_persistenceEngine; +} + } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.h b/searchcore/src/vespa/searchcore/proton/server/proton.h index 7d877eb110a..0e6d20115a0 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.h +++ b/searchcore/src/vespa/searchcore/proton/server/proton.h @@ -16,7 +16,6 @@ #include <vespa/searchcore/proton/metrics/metrics_engine.h> #include <vespa/searchcore/proton/persistenceengine/i_resource_write_filter.h> #include <vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h> -#include <vespa/searchcore/proton/persistenceengine/persistenceengine.h> #include <vespa/searchlib/common/fileheadercontext.h> #include <vespa/searchlib/engine/monitorapi.h> #include <vespa/vespalib/net/component_config_producer.h> @@ -32,6 +31,8 @@ namespace vespalib { class StateServer; } namespace search::transactionlog { class TransLogServerApp; } namespace metrics { class MetricLockGuard; } +namespace storage::spi { class PersistenceProvider; } + namespace proton { class DiskMemUsageSampler; @@ -42,6 +43,7 @@ class SummaryEngine; class DocsumBySlime; class FlushEngine; class MatchEngine; +class PersistenceEngine; class Proton : public IProtonConfigurerOwner, public search::engine::MonitorServer, @@ -83,7 +85,7 @@ private: ProtonFileHeaderContext _fileHeaderContext; std::unique_ptr<TLS> _tls; std::unique_ptr<DiskMemUsageSampler> _diskMemUsageSampler; - PersistenceEngine::UP _persistenceEngine; + std::unique_ptr<PersistenceEngine> _persistenceEngine; DocumentDBMap _documentDBMap; std::unique_ptr<MatchEngine> _matchEngine; std::unique_ptr<SummaryEngine> _summaryEngine; @@ -206,7 +208,7 @@ public: bool isInitializing() const override { return _isInitializing; } bool hasAbortedInit() const { return _abortInit; } - storage::spi::PersistenceProvider & getPersistence() { return *_persistenceEngine; } + storage::spi::PersistenceProvider & getPersistence(); void get_state(const vespalib::slime::Inserter &inserter, bool full) const override; std::vector<vespalib::string> get_children_names() const override; diff --git a/storage/src/tests/persistence/common/persistenceproviderwrapper.h b/storage/src/tests/persistence/common/persistenceproviderwrapper.h index cc26b251e67..b07f9c5e0f5 100644 --- a/storage/src/tests/persistence/common/persistenceproviderwrapper.h +++ b/storage/src/tests/persistence/common/persistenceproviderwrapper.h @@ -17,8 +17,6 @@ #include <vespa/persistence/spi/abstractpersistenceprovider.h> -#include <vector> -#include <string> #include <mutex> namespace storage { |