aboutsummaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-02-05 23:32:00 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-02-06 00:26:08 +0000
commit4c5a7cac411b30b9b4bd3ca067efcc9f3719b0ea (patch)
tree2e09c62b854357bbb1c8d433898d004e3f3995a5 /storage
parentb84ef936b1cedce0b99f79e03b2fe25a8db5f7c3 (diff)
Reduce code visibility and include only what you need from config library.
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp1
-rw-r--r--storage/src/tests/common/teststorageapp.cpp3
-rw-r--r--storage/src/tests/distributor/putoperationtest.cpp2
-rw-r--r--storage/src/tests/frameworkimpl/status/statustest.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketmanager.cpp1
-rw-r--r--storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp3
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe.h1
-rw-r--r--storage/src/vespa/storage/distributor/statecheckers.cpp4
-rw-r--r--storage/src/vespa/storage/distributor/top_level_distributor.h1
-rw-r--r--storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp10
-rw-r--r--storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h10
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp11
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.h8
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp10
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h30
-rw-r--r--storage/src/vespa/storage/storageserver/bouncer.cpp9
-rw-r--r--storage/src/vespa/storage/storageserver/bouncer.h36
-rw-r--r--storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp9
-rw-r--r--storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h8
-rw-r--r--storage/src/vespa/storage/storageserver/communicationmanager.cpp1
-rw-r--r--storage/src/vespa/storage/storageserver/communicationmanager.h7
-rw-r--r--storage/src/vespa/storage/storageserver/mergethrottler.cpp11
-rw-r--r--storage/src/vespa/storage/storageserver/mergethrottler.h12
-rw-r--r--storage/src/vespa/storage/storageserver/opslogger.cpp12
-rw-r--r--storage/src/vespa/storage/storageserver/opslogger.h9
-rw-r--r--storage/src/vespa/storage/storageserver/priorityconverter.cpp9
-rw-r--r--storage/src/vespa/storage/storageserver/priorityconverter.h9
-rw-r--r--storage/src/vespa/storage/storageserver/servicelayernode.h1
-rw-r--r--storage/src/vespa/storage/storageserver/storagenode.cpp1
-rw-r--r--storage/src/vespa/storage/storageserver/storagenode.h3
-rw-r--r--storage/src/vespa/storage/tools/getidealstate.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitormanager.cpp12
-rw-r--r--storage/src/vespa/storage/visiting/visitormanager.h11
33 files changed, 143 insertions, 116 deletions
diff --git a/storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp b/storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp
index 23a0df81bab..cd70aecd1bb 100644
--- a/storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp
+++ b/storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp
@@ -2,7 +2,6 @@
#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
#include <vespa/vdslib/distribution/distribution.h>
-#include <vespa/config/config.h>
#include <vespa/vdslib/state/clusterstate.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storage/src/tests/common/teststorageapp.cpp b/storage/src/tests/common/teststorageapp.cpp
index 7a19e84791d..91fdf5aa602 100644
--- a/storage/src/tests/common/teststorageapp.cpp
+++ b/storage/src/tests/common/teststorageapp.cpp
@@ -4,14 +4,13 @@
#include <vespa/storage/common/content_bucket_db_options.h>
#include <vespa/storage/config/config-stor-server.h>
#include <vespa/config-stor-distribution.h>
-#include <vespa/config-load-type.h>
#include <vespa/config-fleetcontroller.h>
#include <vespa/persistence/dummyimpl/dummypersistence.h>
#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vdslib/state/clusterstate.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/util/time.h>
-#include <vespa/config/config.h>
+#include <vespa/config/subscription/configuri.h>
#include <vespa/config/helper/configgetter.hpp>
#include <thread>
#include <sstream>
diff --git a/storage/src/tests/distributor/putoperationtest.cpp b/storage/src/tests/distributor/putoperationtest.cpp
index b02395717e0..53773a55826 100644
--- a/storage/src/tests/distributor/putoperationtest.cpp
+++ b/storage/src/tests/distributor/putoperationtest.cpp
@@ -1,7 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/distributor/distributor_stripe_test_util.h>
-#include <vespa/document/config/documenttypes_config_fwd.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/storage/distributor/top_level_distributor.h>
@@ -13,6 +12,7 @@
#include <vespa/storageapi/message/state.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vespalib/text/stringtokenizer.h>
+#include <vespa/config/helper/configgetter.h>
using std::shared_ptr;
using config::ConfigGetter;
diff --git a/storage/src/tests/frameworkimpl/status/statustest.cpp b/storage/src/tests/frameworkimpl/status/statustest.cpp
index 2e136977026..97bfa41aece 100644
--- a/storage/src/tests/frameworkimpl/status/statustest.cpp
+++ b/storage/src/tests/frameworkimpl/status/statustest.cpp
@@ -2,7 +2,6 @@
#include <vespa/storageframework/defaultimplementation/component/componentregisterimpl.h>
#include <vespa/storage/frameworkimpl/status/statuswebserver.h>
-#include <vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h>
#include <vespa/storageframework/generic/status/htmlstatusreporter.h>
#include <vespa/storageframework/generic/status/xmlstatusreporter.h>
#include <tests/common/teststorageapp.h>
@@ -10,6 +9,7 @@
#include <vespa/vespalib/net/crypto_engine.h>
#include <vespa/vespalib/net/socket_spec.h>
#include <vespa/vespalib/net/sync_crypto_socket.h>
+#include <vespa/config/subscription/configuri.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <gmock/gmock.h>
diff --git a/storage/src/vespa/storage/bucketdb/bucketmanager.cpp b/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
index 9edac8d79ff..73ddeeb888b 100644
--- a/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
+++ b/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
@@ -18,7 +18,6 @@
#include <vespa/storageapi/message/stat.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/vespalib/util/stringfmt.h>
-#include <vespa/config/config.h>
#include <vespa/config/helper/configgetter.hpp>
#include <chrono>
#include <thread>
diff --git a/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp b/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp
index 9f9bbf4992e..a8c6bf6529c 100644
--- a/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp
+++ b/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp
@@ -2,9 +2,8 @@
#include "global_bucket_space_distribution_converter.h"
#include <vespa/vdslib/distribution/distribution.h>
-#include <vespa/config/config.h>
#include <vespa/config/print/asciiconfigwriter.h>
-#include <vespa/config/print/asciiconfigreader.h>
+#include <vespa/config/print/asciiconfigreader.hpp>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/vdslib/distribution/distribution_config_util.h>
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe.h b/storage/src/vespa/storage/distributor/distributor_stripe.h
index 809b4dd0e41..49b062d6cc1 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe.h
+++ b/storage/src/vespa/storage/distributor/distributor_stripe.h
@@ -13,7 +13,6 @@
#include "stripe_access_guard.h"
#include "stripe_bucket_db_updater.h"
#include "tickable_stripe.h"
-#include <vespa/config/config.h>
#include <vespa/storage/common/doneinitializehandler.h>
#include <vespa/storage/common/messagesender.h>
#include <vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h>
diff --git a/storage/src/vespa/storage/distributor/statecheckers.cpp b/storage/src/vespa/storage/distributor/statecheckers.cpp
index a2069219d5d..d400151b349 100644
--- a/storage/src/vespa/storage/distributor/statecheckers.cpp
+++ b/storage/src/vespa/storage/distributor/statecheckers.cpp
@@ -656,6 +656,10 @@ public:
addNode(entry->getNodeRef(i).getNode());
}
}
+ MergeNodes(MergeNodes && rhs) noexcept = default;
+ MergeNodes & operator =(MergeNodes && rhs) noexcept = delete;
+ MergeNodes(const MergeNodes & rhs) = delete;
+ MergeNodes & operator =(const MergeNodes & rhs) = delete;
~MergeNodes();
diff --git a/storage/src/vespa/storage/distributor/top_level_distributor.h b/storage/src/vespa/storage/distributor/top_level_distributor.h
index 64e431c9d4e..20a61acfa37 100644
--- a/storage/src/vespa/storage/distributor/top_level_distributor.h
+++ b/storage/src/vespa/storage/distributor/top_level_distributor.h
@@ -17,7 +17,6 @@
#include "statusreporterdelegate.h"
#include "stripe_bucket_db_updater.h" // TODO this is temporary
#include "stripe_host_info_notifier.h"
-#include <vespa/config/config.h>
#include <vespa/storage/common/distributorcomponent.h>
#include <vespa/storage/common/doneinitializehandler.h>
#include <vespa/storage/common/messagesender.h>
diff --git a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
index 45dd44d0245..a9b7a727a5b 100644
--- a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
@@ -7,6 +7,8 @@
#include <vespa/vespalib/util/size_literals.h>
#include <vespa/vespalib/component/vtag.h>
#include <vespa/vespalib/net/crypto_engine.h>
+#include <vespa/config/subscription/configuri.h>
+#include <vespa/config/helper/configfetcher.hpp>
#include <functional>
#include <vespa/log/log.h>
@@ -21,17 +23,17 @@ StatusWebServer::StatusWebServer(
: _reporterMap(reporterMap),
_port(0),
_httpServer(),
- _configFetcher(configUri.getContext()),
+ _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext())),
_component(std::make_unique<framework::Component>(componentRegister, "Status"))
{
- _configFetcher.subscribe<vespa::config::content::core::StorStatusConfig>(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe<vespa::config::content::core::StorStatusConfig>(configUri.getConfigId(), this);
+ _configFetcher->start();
}
StatusWebServer::~StatusWebServer()
{
// Avoid getting config during shutdown
- _configFetcher.close();
+ _configFetcher->close();
if (_httpServer) {
LOG(debug, "Shutting down status web server on port %u", _httpServer->getListenPort());
diff --git a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
index f4bf2534036..429f5249441 100644
--- a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
+++ b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
@@ -12,12 +12,15 @@
#include <vespa/storage/config/config-stor-status.h>
#include <vespa/storageframework/generic/thread/runnable.h>
-#include <vespa/config/config.h>
-#include <vespa/config/helper/configfetcher.h>
+#include <vespa/config/helper/ifetchercallback.h>
#include <vespa/vespalib/portal/portal.h>
#include <vespa/vespalib/util/threadstackexecutor.h>
#include <list>
+namespace config {
+ class ConfigUri;
+ class ConfigFetcher;
+}
namespace storage {
namespace framework {
@@ -28,6 +31,7 @@ namespace framework {
class HttpUrlPath;
class Component;
}
+
class StatusWebServer : private config::IFetcherCallback<vespa::config::content::core::StorStatusConfig>
{
class WebServer : public vespalib::Portal::GetHandler {
@@ -64,7 +68,7 @@ class StatusWebServer : private config::IFetcherCallback<vespa::config::content:
framework::StatusReporterMap& _reporterMap;
uint16_t _port;
std::unique_ptr<WebServer> _httpServer;
- config::ConfigFetcher _configFetcher;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
std::unique_ptr<framework::Component> _component;
public:
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
index 0e511241d18..d5097f4f8e4 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
@@ -24,7 +24,8 @@
#include <vespa/vespalib/util/idestructorcallback.h>
#include <vespa/vespalib/util/sequencedtaskexecutor.h>
#include <vespa/vespalib/util/stringfmt.h>
-#include <algorithm>
+#include <vespa/config/subscription/configuri.h>
+#include <vespa/config/helper/configfetcher.hpp>
#include <thread>
#include <vespa/log/bufferedlogger.h>
@@ -73,7 +74,7 @@ FileStorManager(const config::ConfigUri & configUri, spi::PersistenceProvider& p
_persistenceHandlers(),
_threads(),
_bucketOwnershipNotifier(std::make_unique<BucketOwnershipNotifier>(_component, *this)),
- _configFetcher(configUri.getContext()),
+ _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext())),
_use_async_message_handling_on_schedule(false),
_metrics(std::make_unique<FileStorMetrics>()),
_filestorHandler(),
@@ -83,8 +84,8 @@ FileStorManager(const config::ConfigUri & configUri, spi::PersistenceProvider& p
_host_info_reporter(_component.getStateUpdater()),
_resource_usage_listener_registration(provider.register_resource_usage_listener(_host_info_reporter))
{
- _configFetcher.subscribe(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe(configUri.getConfigId(), this);
+ _configFetcher->start();
_component.registerMetric(*_metrics);
_component.registerStatusPage(*this);
_component.getStateUpdater().addStateListener(*this);
@@ -851,7 +852,7 @@ void FileStorManager::onClose()
_bucketExecutorRegistration.reset();
_resource_usage_listener_registration.reset();
// Avoid getting config during shutdown
- _configFetcher.close();
+ _configFetcher->close();
LOG(debug, "Closed _configFetcher.");
_filestorHandler->close();
LOG(debug, "Closed _filestorHandler.");
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
index b7450de13d8..83f1826c498 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
@@ -25,10 +25,12 @@
#include <vespa/storage/common/nodestateupdater.h>
#include <vespa/storageframework/generic/status/htmlstatusreporter.h>
-#include <vespa/config/subscription/configuri.h>
#include <vespa/config/helper/ifetchercallback.h>
-#include <vespa/config/config.h>
+namespace config {
+ class ConfigUri;
+ class ConfigFetcher;
+}
namespace vespalib { class IDestructorCallback; }
namespace storage {
@@ -68,7 +70,7 @@ class FileStorManager : public StorageLinkQueued,
std::unique_ptr<BucketOwnershipNotifier> _bucketOwnershipNotifier;
std::unique_ptr<vespa::config::content::StorFilestorConfig> _config;
- config::ConfigFetcher _configFetcher;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
bool _use_async_message_handling_on_schedule;
std::shared_ptr<FileStorMetrics> _metrics;
std::unique_ptr<FileStorHandler> _filestorHandler;
diff --git a/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp b/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp
index 90f7f292a6d..040ace55c52 100644
--- a/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp
@@ -4,6 +4,8 @@
#include "filestormanager.h"
#include <vespa/persistence/spi/persistenceprovider.h>
#include <vespa/config/common/exceptions.h>
+#include <vespa/config/subscription/configuri.h>
+#include <vespa/config/helper/configfetcher.hpp>
#include <algorithm>
#include <vespa/log/log.h>
@@ -47,7 +49,7 @@ ModifiedBucketChecker::ModifiedBucketChecker(
_provider(provider),
_component(),
_thread(),
- _configFetcher(configUri.getContext()),
+ _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext())),
_monitor(),
_stateLock(),
_bucketSpaces(),
@@ -56,8 +58,8 @@ ModifiedBucketChecker::ModifiedBucketChecker(
_maxPendingChunkSize(100),
_singleThreadMode(false)
{
- _configFetcher.subscribe<vespa::config::content::core::StorServerConfig>(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe<vespa::config::content::core::StorServerConfig>(configUri.getConfigId(), this);
+ _configFetcher->start();
std::ostringstream threadName;
threadName << "Modified bucket checker " << static_cast<void*>(this);
@@ -195,7 +197,7 @@ ModifiedBucketChecker::tick()
// Do two phases of locking, as we want tick() to both fetch modified
// buckets and send the first chunk for these in a single call. However,
// we want getModifiedBuckets() to called outside the lock.
- bool shouldRequestFromProvider = false;
+ bool shouldRequestFromProvider;
{
std::lock_guard guard(_stateLock);
if (!currentChunkFinished()) {
diff --git a/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h b/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h
index 6a8b9e5c008..8c0b4084428 100644
--- a/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h
+++ b/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h
@@ -9,8 +9,12 @@
#include <vespa/storage/persistence/messages.h>
#include <vespa/storage/persistence/types.h>
#include <vespa/document/bucket/bucketidlist.h>
-#include <vespa/config/config.h>
+#include <vespa/config/helper/ifetchercallback.h>
+namespace config {
+ class ConfigUri;
+ class ConfigFetcher;
+}
namespace storage {
namespace spi { struct PersistenceProvider; }
@@ -80,18 +84,18 @@ private:
void pop_back() { _buckets.pop_back(); }
};
- spi::PersistenceProvider& _provider;
- ServiceLayerComponent::UP _component;
- framework::Thread::UP _thread;
- config::ConfigFetcher _configFetcher;
- std::mutex _monitor;
- std::condition_variable _cond;
- std::mutex _stateLock;
- CyclicBucketSpaceIterator::UP _bucketSpaces;
- BucketIdListResult _rechecksNotStarted;
- size_t _pendingRequests;
- size_t _maxPendingChunkSize;
- bool _singleThreadMode; // For unit testing only
+ spi::PersistenceProvider & _provider;
+ ServiceLayerComponent::UP _component;
+ framework::Thread::UP _thread;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
+ std::mutex _monitor;
+ std::condition_variable _cond;
+ std::mutex _stateLock;
+ CyclicBucketSpaceIterator::UP _bucketSpaces;
+ BucketIdListResult _rechecksNotStarted;
+ size_t _pendingRequests;
+ size_t _maxPendingChunkSize;
+ bool _singleThreadMode; // For unit testing only
};
} // ns storage
diff --git a/storage/src/vespa/storage/storageserver/bouncer.cpp b/storage/src/vespa/storage/storageserver/bouncer.cpp
index ea14a1b7492..5241a1a88dd 100644
--- a/storage/src/vespa/storage/storageserver/bouncer.cpp
+++ b/storage/src/vespa/storage/storageserver/bouncer.cpp
@@ -9,6 +9,7 @@
#include <vespa/storageapi/message/state.h>
#include <vespa/storageapi/message/persistence.h>
#include <vespa/config/subscription/configuri.h>
+#include <vespa/config/helper/configfetcher.hpp>
#include <vespa/config/common/exceptions.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <sstream>
@@ -27,7 +28,7 @@ Bouncer::Bouncer(StorageComponentRegister& compReg, const config::ConfigUri & co
_baselineNodeState("s:i"),
_derivedNodeStates(),
_clusterState(&lib::State::UP),
- _configFetcher(configUri.getContext()),
+ _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext())),
_metrics(std::make_unique<BouncerMetrics>())
{
_component.getStateUpdater().addStateListener(*this);
@@ -36,8 +37,8 @@ Bouncer::Bouncer(StorageComponentRegister& compReg, const config::ConfigUri & co
// exception allowing program to continue if missing/faulty config.
try{
if (!configUri.empty()) {
- _configFetcher.subscribe<vespa::config::content::core::StorBouncerConfig>(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe<vespa::config::content::core::StorBouncerConfig>(configUri.getConfigId(), this);
+ _configFetcher->start();
} else {
LOG(info, "No config id specified. Using defaults rather than "
"config");
@@ -66,7 +67,7 @@ Bouncer::print(std::ostream& out, bool verbose,
void
Bouncer::onClose()
{
- _configFetcher.close();
+ _configFetcher->close();
_component.getStateUpdater().removeStateListener(*this);
}
diff --git a/storage/src/vespa/storage/storageserver/bouncer.h b/storage/src/vespa/storage/storageserver/bouncer.h
index e6ddfe7ad49..50a08387b39 100644
--- a/storage/src/vespa/storage/storageserver/bouncer.h
+++ b/storage/src/vespa/storage/storageserver/bouncer.h
@@ -11,7 +11,7 @@
#pragma once
-#include <vespa/config/helper/configfetcher.h>
+#include <vespa/config/helper/ifetchercallback.h>
#include <vespa/vdslib/state/nodestate.h>
#include <vespa/storage/common/nodestateupdater.h>
#include <vespa/storage/common/storagecomponent.h>
@@ -19,7 +19,10 @@
#include <vespa/storage/config/config-stor-bouncer.h>
#include <unordered_map>
-namespace config { class ConfigUri; }
+namespace config {
+ class ConfigUri;
+ class ConfigFetcher;
+}
namespace storage {
@@ -36,7 +39,7 @@ class Bouncer : public StorageLink,
using BucketSpaceNodeStateMapping = std::unordered_map<document::BucketSpace, lib::NodeState, document::BucketSpace::hash>;
BucketSpaceNodeStateMapping _derivedNodeStates;
const lib::State* _clusterState;
- config::ConfigFetcher _configFetcher;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
std::unique_ptr<BouncerMetrics> _metrics;
public:
@@ -47,36 +50,20 @@ public:
const std::string& indent) const override;
void configure(std::unique_ptr<vespa::config::content::core::StorBouncerConfig> config) override;
-
const BouncerMetrics& metrics() const noexcept;
private:
- void validateConfig(
- const vespa::config::content::core::StorBouncerConfig&) const;
-
+ void validateConfig(const vespa::config::content::core::StorBouncerConfig&) const;
void onClose() override;
-
- void abortCommandForUnavailableNode(api::StorageMessage&,
- const lib::State&);
-
- void rejectCommandWithTooHighClockSkew(api::StorageMessage& msg,
- int maxClockSkewInSeconds);
-
+ void abortCommandForUnavailableNode(api::StorageMessage&, const lib::State&);
+ void rejectCommandWithTooHighClockSkew(api::StorageMessage& msg, int maxClockSkewInSeconds);
void abortCommandDueToClusterDown(api::StorageMessage&);
-
- void rejectDueToInsufficientPriority(api::StorageMessage&,
- api::StorageMessage::Priority);
-
+ void rejectDueToInsufficientPriority(api::StorageMessage&, api::StorageMessage::Priority);
void reject_due_to_too_few_bucket_bits(api::StorageMessage&);
-
bool clusterIsUp() const;
-
bool isDistributor() const;
-
bool isExternalLoad(const api::MessageType&) const noexcept;
-
bool isExternalWriteOperation(const api::MessageType&) const noexcept;
-
bool priorityRejectionIsEnabled(int configuredPriority) const noexcept {
return (configuredPriority != -1);
}
@@ -86,12 +73,9 @@ private:
* update commands), return that timestamp. Otherwise, return 0.
*/
uint64_t extractMutationTimestampIfAny(const api::StorageMessage& msg);
-
bool onDown(const std::shared_ptr<api::StorageMessage>&) override;
-
void handleNewState() override;
const lib::NodeState &getDerivedNodeState(document::BucketSpace bucketSpace) const;
-
void append_node_identity(std::ostream& target_stream) const;
};
diff --git a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp
index ee58710e585..9d7dd95d922 100644
--- a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp
+++ b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp
@@ -11,6 +11,9 @@
#include <vespa/storage/common/content_bucket_space_repo.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/metrics/metrictimer.h>
+#include <vespa/config/subscription/configuri.h>
+#include <vespa/config/helper/configfetcher.hpp>
+
#include <vespa/log/bufferedlogger.h>
@@ -24,7 +27,7 @@ ChangedBucketOwnershipHandler::ChangedBucketOwnershipHandler(
: StorageLink("Changed bucket ownership handler"),
_component(compReg, "changedbucketownershiphandler"),
_metrics(),
- _configFetcher(configUri.getContext()),
+ _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext())),
_stateLock(),
_currentState(), // Not set yet, so ownership will not be valid
_currentOwnership(std::make_shared<OwnershipState>(
@@ -33,8 +36,8 @@ ChangedBucketOwnershipHandler::ChangedBucketOwnershipHandler(
_abortMutatingIdealStateOps(false),
_abortMutatingExternalLoadOps(false)
{
- _configFetcher.subscribe<vespa::config::content::PersistenceConfig>(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe<vespa::config::content::PersistenceConfig>(configUri.getConfigId(), this);
+ _configFetcher->start();
_component.registerMetric(_metrics);
}
diff --git a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h
index ddf8516ed6e..e753d96871e 100644
--- a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h
+++ b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h
@@ -3,8 +3,8 @@
#include <vespa/document/bucket/bucketid.h>
#include <vespa/storage/common/storagelink.h>
-#include <vespa/config/config.h>
#include <vespa/config-persistence.h>
+#include <vespa/config/helper/ifetchercallback.h>
#include <vespa/storage/common/servicelayercomponent.h>
#include <vespa/storage/persistence/messages.h>
#include <vespa/metrics/valuemetric.h>
@@ -14,6 +14,10 @@
#include <vector>
#include <unordered_map>
+namespace config {
+ class ConfigUri;
+ class ConfigFetcher;
+}
namespace storage {
namespace lib {
@@ -112,7 +116,7 @@ public:
private:
ServiceLayerComponent _component;
Metrics _metrics;
- config::ConfigFetcher _configFetcher;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
mutable std::mutex _stateLock;
std::shared_ptr<const lib::ClusterStateBundle> _currentState;
OwnershipState::CSP _currentOwnership;
diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.cpp b/storage/src/vespa/storage/storageserver/communicationmanager.cpp
index 9b67830b3dc..237dc76d783 100644
--- a/storage/src/vespa/storage/storageserver/communicationmanager.cpp
+++ b/storage/src/vespa/storage/storageserver/communicationmanager.cpp
@@ -19,6 +19,7 @@
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
+#include <vespa/config/helper/configfetcher.hpp>
#include <string_view>
#include <vespa/log/bufferedlogger.h>
diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.h b/storage/src/vespa/storage/storageserver/communicationmanager.h
index c899cee3e14..80117b32030 100644
--- a/storage/src/vespa/storage/storageserver/communicationmanager.h
+++ b/storage/src/vespa/storage/storageserver/communicationmanager.h
@@ -21,15 +21,18 @@
#include <vespa/storageapi/mbusprot/storagereply.h>
#include <vespa/messagebus/imessagehandler.h>
#include <vespa/messagebus/ireplyhandler.h>
-#include <vespa/config/helper/configfetcher.h>
+#include <vespa/config/helper/ifetchercallback.h>
#include <vespa/vespalib/util/document_runnable.h>
#include <vespa/config/subscription/configuri.h>
+#include <vespa/config-bucketspaces.h>
#include <map>
#include <queue>
#include <atomic>
#include <mutex>
-#include <vespa/config-bucketspaces.h>
+namespace config {
+ class ConfigFetcher;
+}
namespace mbus {
class RPCMessageBus;
class SourceSession;
diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.cpp b/storage/src/vespa/storage/storageserver/mergethrottler.cpp
index 4b4ff6c7e37..28a76413149 100644
--- a/storage/src/vespa/storage/storageserver/mergethrottler.cpp
+++ b/storage/src/vespa/storage/storageserver/mergethrottler.cpp
@@ -8,9 +8,10 @@
#include <vespa/messagebus/dynamicthrottlepolicy.h>
#include <vespa/messagebus/error.h>
#include <vespa/config/common/exceptions.h>
+#include <vespa/config/helper/configfetcher.hpp>
+#include <vespa/config/subscription/configuri.h>
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/util/stringfmt.h>
-#include <algorithm>
#include <cassert>
#include <vespa/log/log.h>
@@ -185,7 +186,7 @@ MergeThrottler::MergeThrottler(
_queueSequence(0),
_messageLock(),
_stateLock(),
- _configFetcher(configUri.getContext()),
+ _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext())),
_metrics(std::make_unique<Metrics>()),
_component(compReg, "mergethrottler"),
_thread(),
@@ -198,8 +199,8 @@ MergeThrottler::MergeThrottler(
{
_throttlePolicy->setMinWindowSize(20);
_throttlePolicy->setMaxWindowSize(20);
- _configFetcher.subscribe<StorServerConfig>(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe<StorServerConfig>(configUri.getConfigId(), this);
+ _configFetcher->start();
_component.registerStatusPage(*this);
_component.registerMetric(*_metrics);
}
@@ -271,7 +272,7 @@ void
MergeThrottler::onClose()
{
// Avoid getting config on shutdown
- _configFetcher.close();
+ _configFetcher->close();
{
std::lock_guard guard(_messageLock);
// Note: used to prevent taking locks in different order if onFlush
diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.h b/storage/src/vespa/storage/storageserver/mergethrottler.h
index b953595c91e..e501e0edd39 100644
--- a/storage/src/vespa/storage/storageserver/mergethrottler.h
+++ b/storage/src/vespa/storage/storageserver/mergethrottler.h
@@ -20,13 +20,15 @@
#include <vespa/metrics/countmetric.h>
#include <vespa/metrics/valuemetric.h>
#include <vespa/metrics/metrictimer.h>
-#include <vespa/config/config.h>
+#include <vespa/config/helper/ifetchercallback.h>
+
#include <chrono>
-namespace mbus {
-class DynamicThrottlePolicy;
+namespace mbus { class DynamicThrottlePolicy; }
+namespace config {
+ class ConfigFetcher;
+ class ConfigUri;
}
-
namespace storage {
class AbortBucketOperationsCommand;
@@ -170,7 +172,7 @@ private:
mutable std::mutex _messageLock;
std::condition_variable _messageCond;
mutable std::mutex _stateLock;
- config::ConfigFetcher _configFetcher;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
// Messages pending to be processed by the worker thread
std::vector<api::StorageMessage::SP> _messagesDown;
std::vector<api::StorageMessage::SP> _messagesUp;
diff --git a/storage/src/vespa/storage/storageserver/opslogger.cpp b/storage/src/vespa/storage/storageserver/opslogger.cpp
index 244813775a1..03322cb55fd 100644
--- a/storage/src/vespa/storage/storageserver/opslogger.cpp
+++ b/storage/src/vespa/storage/storageserver/opslogger.cpp
@@ -2,6 +2,8 @@
#include "opslogger.h"
#include <vespa/storageapi/message/persistence.h>
+#include <vespa/config/helper/configfetcher.hpp>
+#include <vespa/config/subscription/configuri.h>
#include <sstream>
#include <vespa/log/log.h>
@@ -16,10 +18,10 @@ OpsLogger::OpsLogger(StorageComponentRegister& compReg,
_fileName(),
_targetFile(nullptr),
_component(compReg, "opslogger"),
- _configFetcher(configUri.getContext())
+ _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext()))
{
- _configFetcher.subscribe<vespa::config::content::core::StorOpsloggerConfig>(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe<vespa::config::content::core::StorOpsloggerConfig>(configUri.getConfigId(), this);
+ _configFetcher->start();
}
OpsLogger::~OpsLogger()
@@ -35,8 +37,8 @@ OpsLogger::~OpsLogger()
void
OpsLogger::onClose()
{
- // Avoid getting config during shutdown
- _configFetcher.close();
+ // Avoid getting config during shutdown
+ _configFetcher->close();
}
void
diff --git a/storage/src/vespa/storage/storageserver/opslogger.h b/storage/src/vespa/storage/storageserver/opslogger.h
index cf39f51279d..039cb72969e 100644
--- a/storage/src/vespa/storage/storageserver/opslogger.h
+++ b/storage/src/vespa/storage/storageserver/opslogger.h
@@ -13,7 +13,12 @@
#include <vespa/storageapi/messageapi/storagemessage.h>
#include <vespa/storageapi/message/state.h>
#include <vespa/storage/config/config-stor-opslogger.h>
-#include <vespa/config/config.h>
+#include <vespa/config/helper/ifetchercallback.h>
+
+namespace config {
+ class ConfigUri;
+ class ConfigFetcher;
+}
namespace storage {
@@ -40,7 +45,7 @@ private:
FILE * _targetFile;
framework::Component _component;
- config::ConfigFetcher _configFetcher;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
};
}
diff --git a/storage/src/vespa/storage/storageserver/priorityconverter.cpp b/storage/src/vespa/storage/storageserver/priorityconverter.cpp
index 1c11edea796..49297f216ca 100644
--- a/storage/src/vespa/storage/storageserver/priorityconverter.cpp
+++ b/storage/src/vespa/storage/storageserver/priorityconverter.cpp
@@ -1,16 +1,17 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "priorityconverter.h"
-#include <vespa/documentapi/messagebus/documentprotocol.h>
#include <vespa/config/subscription/configuri.h>
+#include <vespa/config/helper/configfetcher.hpp>
+
namespace storage {
PriorityConverter::PriorityConverter(const config::ConfigUri & configUri)
- : _configFetcher(configUri.getContext())
+ : _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext()))
{
- _configFetcher.subscribe<vespa::config::content::core::StorPrioritymappingConfig>(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe<vespa::config::content::core::StorPrioritymappingConfig>(configUri.getConfigId(), this);
+ _configFetcher->start();
}
PriorityConverter::~PriorityConverter() = default;
diff --git a/storage/src/vespa/storage/storageserver/priorityconverter.h b/storage/src/vespa/storage/storageserver/priorityconverter.h
index 0dcd66645cb..b1f774e4ff2 100644
--- a/storage/src/vespa/storage/storageserver/priorityconverter.h
+++ b/storage/src/vespa/storage/storageserver/priorityconverter.h
@@ -3,13 +3,16 @@
#pragma once
#include <vespa/storage/config/config-stor-prioritymapping.h>
-#include <vespa/config/helper/configfetcher.h>
+#include <vespa/config/helper/ifetchercallback.h>
#include <vespa/documentapi/messagebus/priority.h>
#include <atomic>
#include <array>
#include <mutex>
-namespace config {class ConfigUri; }
+namespace config {
+ class ConfigUri;
+ class ConfigFetcher;
+}
namespace storage {
@@ -42,7 +45,7 @@ private:
std::map<uint8_t, documentapi::Priority::Value> _reverseMapping;
mutable std::mutex _mutex;
- config::ConfigFetcher _configFetcher;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
};
} // storage
diff --git a/storage/src/vespa/storage/storageserver/servicelayernode.h b/storage/src/vespa/storage/storageserver/servicelayernode.h
index 8f36e1d8748..f0189f943ab 100644
--- a/storage/src/vespa/storage/storageserver/servicelayernode.h
+++ b/storage/src/vespa/storage/storageserver/servicelayernode.h
@@ -13,7 +13,6 @@
#include "storagenode.h"
#include <vespa/storage/visiting/visitormessagesessionfactory.h>
#include <vespa/storage/common/visitorfactory.h>
-#include <vespa/config/config.h>
namespace storage {
diff --git a/storage/src/vespa/storage/storageserver/storagenode.cpp b/storage/src/vespa/storage/storageserver/storagenode.cpp
index c19fca8c58c..34db3b102e7 100644
--- a/storage/src/vespa/storage/storageserver/storagenode.cpp
+++ b/storage/src/vespa/storage/storageserver/storagenode.cpp
@@ -14,6 +14,7 @@
#include <vespa/storage/common/storage_chain_builder.h>
#include <vespa/storage/frameworkimpl/status/statuswebserver.h>
#include <vespa/storage/frameworkimpl/thread/deadlockdetector.h>
+#include <vespa/config/helper/configfetcher.hpp>
#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/storage/src/vespa/storage/storageserver/storagenode.h b/storage/src/vespa/storage/storageserver/storagenode.h
index c49737af78b..2e13c0e24c0 100644
--- a/storage/src/vespa/storage/storageserver/storagenode.h
+++ b/storage/src/vespa/storage/storageserver/storagenode.h
@@ -14,7 +14,6 @@
#include <vespa/config-stor-distribution.h>
#include <vespa/config-upgrading.h>
-#include <vespa/config/helper/configfetcher.h>
#include <vespa/config/helper/ifetchercallback.h>
#include <vespa/config/subscription/configuri.h>
#include <vespa/document/config/config-documenttypes.h>
@@ -27,6 +26,7 @@
#include <mutex>
namespace document { class DocumentTypeRepo; }
+namespace config { class ConfigFetcher; }
namespace storage {
@@ -35,7 +35,6 @@ class CommunicationManager;
class FileStorManager;
class HostInfo;
class IStorageChainBuilder;
-class MemoryStatusViewer;
class NodeIdentity;
class StateManager;
class StateReporter;
diff --git a/storage/src/vespa/storage/tools/getidealstate.cpp b/storage/src/vespa/storage/tools/getidealstate.cpp
index 5b17fa63b5a..8b120924aaa 100644
--- a/storage/src/vespa/storage/tools/getidealstate.cpp
+++ b/storage/src/vespa/storage/tools/getidealstate.cpp
@@ -4,9 +4,9 @@
#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vdslib/state/clusterstate.h>
#include <vespa/vespalib/util/programoptions.h>
-#include <vespa/config/config.h>
#include <vespa/config/print/ostreamconfigwriter.h>
#include <vespa/config-stor-distribution.h>
+#include <vespa/config/subscription/configuri.h>
#include <vespa/config/helper/configgetter.hpp>
#include <iostream>
#include <sstream>
diff --git a/storage/src/vespa/storage/visiting/visitormanager.cpp b/storage/src/vespa/storage/visiting/visitormanager.cpp
index 8450fab5dcb..20178f601fa 100644
--- a/storage/src/vespa/storage/visiting/visitormanager.cpp
+++ b/storage/src/vespa/storage/visiting/visitormanager.cpp
@@ -8,8 +8,10 @@
#include "recoveryvisitor.h"
#include "reindexing_visitor.h"
#include <vespa/storage/common/statusmessages.h>
+#include <vespa/config/subscription/configuri.h>
#include <vespa/config/common/exceptions.h>
#include <vespa/vespalib/util/stringfmt.h>
+#include <vespa/config/helper/configfetcher.hpp>
#include <cassert>
#include <vespa/log/log.h>
@@ -30,8 +32,8 @@ VisitorManager::VisitorManager(const config::ConfigUri & configUri,
_visitorLock(),
_visitorCond(),
_visitorCounter(0),
- _configFetcher(configUri.getContext()),
- _metrics(new VisitorMetrics),
+ _configFetcher(std::make_unique<config::ConfigFetcher>(configUri.getContext())),
+ _metrics(std::make_shared<VisitorMetrics>()),
_maxFixedConcurrentVisitors(1),
_maxVariableConcurrentVisitors(0),
_maxVisitorQueueSize(1024),
@@ -46,8 +48,8 @@ VisitorManager::VisitorManager(const config::ConfigUri & configUri,
_enforceQueueUse(false),
_visitorFactories(externalFactories)
{
- _configFetcher.subscribe<vespa::config::content::core::StorVisitorConfig>(configUri.getConfigId(), this);
- _configFetcher.start();
+ _configFetcher->subscribe<vespa::config::content::core::StorVisitorConfig>(configUri.getConfigId(), this);
+ _configFetcher->start();
_component.registerMetric(*_metrics);
_thread = _component.startThread(*this, 30s, 1s);
_component.registerMetricUpdateHook(*this, framework::SecondTime(5));
@@ -81,7 +83,7 @@ void
VisitorManager::onClose()
{
// Avoid getting config during shutdown
- _configFetcher.close();
+ _configFetcher->close();
{
std::lock_guard sync(_visitorLock);
for (CommandQueue<api::CreateVisitorCommand>::iterator it
diff --git a/storage/src/vespa/storage/visiting/visitormanager.h b/storage/src/vespa/storage/visiting/visitormanager.h
index 32237de7f36..888c0873e9c 100644
--- a/storage/src/vespa/storage/visiting/visitormanager.h
+++ b/storage/src/vespa/storage/visiting/visitormanager.h
@@ -29,12 +29,15 @@
#include <vespa/storageapi/message/datagram.h>
#include <vespa/storageapi/message/internal.h>
#include <vespa/storageapi/message/visitor.h>
-#include <vespa/config/config.h>
+#include <vespa/config/helper/ifetchercallback.h>
#include <vespa/vespalib/util/document_runnable.h>
-namespace storage {
+namespace config {
+ class ConfigUri;
+ class ConfigFetcher;
+}
-namespace api { class BucketTimeInterval; }
+namespace storage {
class RequestStatusPageReply;
@@ -63,7 +66,7 @@ private:
mutable std::mutex _visitorLock;
std::condition_variable _visitorCond;
uint64_t _visitorCounter;
- config::ConfigFetcher _configFetcher;
+ std::unique_ptr<config::ConfigFetcher> _configFetcher;
std::shared_ptr<VisitorMetrics> _metrics;
uint32_t _maxFixedConcurrentVisitors;
uint32_t _maxVariableConcurrentVisitors;