diff options
22 files changed, 127 insertions, 79 deletions
diff --git a/memfilepersistence/src/vespa/memfilepersistence/spi/memfilepersistenceprovidermetrics.cpp b/memfilepersistence/src/vespa/memfilepersistence/spi/memfilepersistenceprovidermetrics.cpp index 9e3a2b44eb0..638ff05fc60 100644 --- a/memfilepersistence/src/vespa/memfilepersistence/spi/memfilepersistenceprovidermetrics.cpp +++ b/memfilepersistence/src/vespa/memfilepersistence/spi/memfilepersistenceprovidermetrics.cpp @@ -45,7 +45,7 @@ MemFilePersistenceMetrics::~MemFilePersistenceMetrics() { } MemFilePersistenceThreadMetrics* MemFilePersistenceMetrics::addThreadMetrics() { - metrics::MetricLockGuard metricLock(_component.getMetricManagerLock()); + vespalib::MonitorGuard metricLock(_component.getMetricManagerLock()); vespalib::LockGuard guard(_threadMetricsLock); if (!_sumMetric.get()) { diff --git a/memfilepersistence/src/vespa/memfilepersistence/spi/memfilepersistenceprovidermetrics.h b/memfilepersistence/src/vespa/memfilepersistence/spi/memfilepersistenceprovidermetrics.h index 6c6e1d882d1..81c64142777 100644 --- a/memfilepersistence/src/vespa/memfilepersistence/spi/memfilepersistenceprovidermetrics.h +++ b/memfilepersistence/src/vespa/memfilepersistence/spi/memfilepersistenceprovidermetrics.h @@ -3,6 +3,8 @@ #include <vespa/metrics/metrics.h> #include <vespa/memfilepersistence/mapper/serializationmetrics.h> +#include <vespa/vespalib/util/sync.h> +#include <list> namespace storage { diff --git a/metrics/src/vespa/metrics/metricmanager.h b/metrics/src/vespa/metrics/metricmanager.h index ffa73c5eff1..28e03b01aff 100644 --- a/metrics/src/vespa/metrics/metricmanager.h +++ b/metrics/src/vespa/metrics/metricmanager.h @@ -50,6 +50,7 @@ #include <vespa/metrics/metricsnapshot.h> #include <vespa/metrics/namehash.h> #include <vespa/metrics/valuemetric.h> +#include <vespa/metrics/updatehook.h> #include <vespa/vespalib/stllike/hash_set.h> #include <vespa/vespalib/util/sync.h> #include <map> @@ -64,21 +65,6 @@ typedef vespalib::MonitorGuard MetricLockGuard; class MetricManager : private document::Runnable { public: - class UpdateHook { - const char* _name; - time_t _nextCall; - uint32_t _period; - friend class MetricManager; - - public: - typedef vespalib::LinkedPtr<UpdateHook> LP; - using MetricLockGuard = metrics::MetricLockGuard; - - UpdateHook(const char* name) : _name(name), _nextCall(0), _period(0) {} - virtual ~UpdateHook() {} - virtual void updateMetrics(const MetricLockGuard & guard) = 0; - const char* getName() const { return _name; } - }; struct Timer { virtual ~Timer() {} diff --git a/metrics/src/vespa/metrics/metrics.h b/metrics/src/vespa/metrics/metrics.h index 4b21dfb8579..db18bbefdbf 100644 --- a/metrics/src/vespa/metrics/metrics.h +++ b/metrics/src/vespa/metrics/metrics.h @@ -11,7 +11,6 @@ #include <vespa/metrics/loadmetric.h> #include <vespa/metrics/summetric.h> #include <vespa/metrics/metricset.h> -#include <vespa/metrics/metricmanager.h> #include <vespa/metrics/metricsnapshot.h> #include <vespa/metrics/metrictimer.h> diff --git a/metrics/src/vespa/metrics/state_api_adapter.cpp b/metrics/src/vespa/metrics/state_api_adapter.cpp index 606f57a87fe..28e0e277af7 100644 --- a/metrics/src/vespa/metrics/state_api_adapter.cpp +++ b/metrics/src/vespa/metrics/state_api_adapter.cpp @@ -1,5 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "state_api_adapter.h" +#include <vespa/metrics/metricmanager.h> #include "jsonwriter.h" namespace metrics { diff --git a/metrics/src/vespa/metrics/state_api_adapter.h b/metrics/src/vespa/metrics/state_api_adapter.h index dd041a3c37c..df3175dd614 100644 --- a/metrics/src/vespa/metrics/state_api_adapter.h +++ b/metrics/src/vespa/metrics/state_api_adapter.h @@ -3,10 +3,11 @@ #pragma once #include <vespa/vespalib/net/metrics_producer.h> -#include "metricmanager.h" namespace metrics { +class MetricManager; + /** * This is an adapter class that implements the metrics producer * interface defined by the state api implementation in vespalib by diff --git a/metrics/src/vespa/metrics/updatehook.h b/metrics/src/vespa/metrics/updatehook.h new file mode 100644 index 00000000000..2b2f4466b54 --- /dev/null +++ b/metrics/src/vespa/metrics/updatehook.h @@ -0,0 +1,27 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#pragma once + +#include <vespa/vespalib/util/sync.h> +#include <vespa/vespalib/util/linkedptr.h> + +namespace metrics { + +class MetricManager; + +class UpdateHook { + const char* _name; + time_t _nextCall; + uint32_t _period; + friend class MetricManager; + +public: + typedef vespalib::LinkedPtr<UpdateHook> LP; + using MetricLockGuard = vespalib::MonitorGuard; + + UpdateHook(const char* name) : _name(name), _nextCall(0), _period(0) {} + virtual ~UpdateHook() {} + virtual void updateMetrics(const MetricLockGuard & guard) = 0; + const char* getName() const { return _name; } +}; + +} diff --git a/searchcore/src/vespa/searchcore/fdispatch/program/fdispatch.h b/searchcore/src/vespa/searchcore/fdispatch/program/fdispatch.h index f4fa80a77ab..1def71604fb 100644 --- a/searchcore/src/vespa/searchcore/fdispatch/program/fdispatch.h +++ b/searchcore/src/vespa/searchcore/fdispatch/program/fdispatch.h @@ -9,6 +9,8 @@ #include <vespa/searchlib/engine/transportserver.h> #include <vespa/searchcore/config/config-fdispatchrc.h> #include <vespa/config/subscription/configuri.h> +#include <vespa/config/helper/ifetchercallback.h> +#include <vespa/config/helper/configfetcher.h> #include <vespa/vespalib/net/simple_component_config_producer.h> #include <vespa/vespalib/util/random.h> diff --git a/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp b/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp index c5581822e9d..be39398163f 100644 --- a/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp +++ b/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp @@ -1,18 +1,19 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include <vespa/fastos/fastos.h> -#include <vespa/log/log.h> -LOG_SETUP(".proton.server.metricsengine"); #include "metrics_engine.h" #include <vespa/metrics/jsonwriter.h> +#include <vespa/metrics/metricmanager.h> +#include <vespa/log/log.h> +LOG_SETUP(".proton.server.metricsengine"); namespace proton { MetricsEngine::MetricsEngine() : _root(), _legacyRoot(), - _manager(), - _metrics_producer(_manager) + _manager(std::make_unique<metrics::MetricManager>()), + _metrics_producer(*_manager) { } @@ -24,15 +25,15 @@ void MetricsEngine::start(const config::ConfigUri &) { { - metrics::MetricLockGuard guard(_manager.getMetricLock()); - _manager.registerMetric(guard, _root); - _manager.registerMetric(guard, _legacyRoot); + metrics::MetricLockGuard guard(_manager->getMetricLock()); + _manager->registerMetric(guard, _root); + _manager->registerMetric(guard, _legacyRoot); } // Storage doesnt snapshot unset metrics to save memory. Currently // feature seems a bit bugged. Disabling this optimalization for search. // Can enable it later when it is confirmed to be working well. - _manager.snapshotUnsetMetrics(true); + _manager->snapshotUnsetMetrics(true); // Currently, when injecting a metric manager into the content layer, // the content layer require to be the one initializing and starting it. @@ -41,28 +42,28 @@ MetricsEngine::start(const config::ConfigUri &) } void -MetricsEngine::addMetricsHook(metrics::MetricManager::UpdateHook &hook) +MetricsEngine::addMetricsHook(metrics::UpdateHook &hook) { - _manager.addMetricUpdateHook(hook, 5); + _manager->addMetricUpdateHook(hook, 5); } void -MetricsEngine::removeMetricsHook(metrics::MetricManager::UpdateHook &hook) +MetricsEngine::removeMetricsHook(metrics::UpdateHook &hook) { - _manager.removeMetricUpdateHook(hook); + _manager->removeMetricUpdateHook(hook); } void MetricsEngine::addExternalMetrics(metrics::Metric &child) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); _legacyRoot.registerMetric(child); } void MetricsEngine::removeExternalMetrics(metrics::Metric &child) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); _legacyRoot.unregisterMetric(child); } @@ -109,7 +110,7 @@ removeLegacyDocumentDBMetrics(LegacyProtonMetrics &legacyRoot, void MetricsEngine::addDocumentDBMetrics(DocumentDBMetricsCollection &child) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); addLegacyDocumentDBMetrics(_legacyRoot, child.getMetrics()); _root.registerMetric(child.getTaggedMetrics()); @@ -118,7 +119,7 @@ MetricsEngine::addDocumentDBMetrics(DocumentDBMetricsCollection &child) void MetricsEngine::removeDocumentDBMetrics(DocumentDBMetricsCollection &child) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); removeLegacyDocumentDBMetrics(_legacyRoot, child.getMetrics()); _root.unregisterMetric(child.getTaggedMetrics()); @@ -170,7 +171,7 @@ MetricsEngine::addAttribute(AttributeMetrics &subAttributes, AttributeMetrics *totalAttributes, const std::string &name) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); doAddAttribute(subAttributes, name); if (totalAttributes != NULL) { doAddAttribute(*totalAttributes, name); @@ -182,7 +183,7 @@ MetricsEngine::removeAttribute(AttributeMetrics &subAttributes, AttributeMetrics *totalAttributes, const std::string &name) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); doRemoveAttribute(subAttributes, name); if (totalAttributes != NULL) { doRemoveAttribute(*totalAttributes, name); @@ -193,7 +194,7 @@ void MetricsEngine::cleanAttributes(AttributeMetrics &subAttributes, AttributeMetrics *totalAttributes) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); doCleanAttributes(subAttributes); if (totalAttributes != NULL) { doCleanAttributes(*totalAttributes); @@ -203,7 +204,7 @@ MetricsEngine::cleanAttributes(AttributeMetrics &subAttributes, void MetricsEngine::addRankProfile(LegacyDocumentDBMetrics &owner, const std::string &name, size_t numDocIdPartitions) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); LegacyDocumentDBMetrics::MatchingMetrics::RankProfileMetrics::LP &entry = owner.matching.rank_profiles[name]; if (entry.get()) { @@ -216,7 +217,7 @@ void MetricsEngine::addRankProfile(LegacyDocumentDBMetrics &owner, } void MetricsEngine::cleanRankProfiles(LegacyDocumentDBMetrics &owner) { - metrics::MetricLockGuard guard(_manager.getMetricLock()); + metrics::MetricLockGuard guard(_manager->getMetricLock()); LegacyDocumentDBMetrics::MatchingMetrics::RankProfileMap metrics; owner.matching.rank_profiles.swap(metrics); for (LegacyDocumentDBMetrics::MatchingMetrics::RankProfileMap::const_iterator @@ -228,7 +229,7 @@ void MetricsEngine::cleanRankProfiles(LegacyDocumentDBMetrics &owner) { void MetricsEngine::stop() { - _manager.stop(); + _manager->stop(); } } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h b/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h index 7c8fa0627e8..d85f7e52f17 100644 --- a/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h +++ b/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h @@ -12,15 +12,23 @@ #include <vespa/metrics/state_api_adapter.h> #include <vespa/vespalib/net/metrics_producer.h> +namespace metrics { + class Metricmanager; + class UpdateHook; +} + +namespace config { + class ConfigUri; +} namespace proton { class MetricsEngine : public MetricsWireService { private: - ContentProtonMetrics _root; - LegacyProtonMetrics _legacyRoot; - metrics::MetricManager _manager; - metrics::StateApiAdapter _metrics_producer; + ContentProtonMetrics _root; + LegacyProtonMetrics _legacyRoot; + std::unique_ptr<metrics::MetricManager> _manager; + metrics::StateApiAdapter _metrics_producer; public: typedef std::unique_ptr<MetricsEngine> UP; @@ -30,8 +38,8 @@ public: ContentProtonMetrics &root() { return _root; } LegacyProtonMetrics &legacyRoot() { return _legacyRoot; } void start(const config::ConfigUri & configUri); - void addMetricsHook(metrics::MetricManager::UpdateHook &hook); - void removeMetricsHook(metrics::MetricManager::UpdateHook &hook); + void addMetricsHook(metrics::UpdateHook &hook); + void removeMetricsHook(metrics::UpdateHook &hook); void addExternalMetrics(metrics::Metric &child); void removeExternalMetrics(metrics::Metric &child); void addDocumentDBMetrics(DocumentDBMetricsCollection &child); @@ -51,7 +59,7 @@ public: void stop(); vespalib::MetricsProducer &metrics_producer() { return _metrics_producer; } - metrics::MetricManager &getManager() { return _manager; } + metrics::MetricManager &getManager() { return *_manager; } }; } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h index efc26510268..07c3cd7f946 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h @@ -37,6 +37,7 @@ #include <vespa/vespalib/util/varholder.h> #include <vespa/searchcore/proton/attribute/attribute_usage_filter.h> #include "disk_mem_usage_forwarder.h" +#include <vespa/metrics/updatehook.h> using vespa::config::search::core::ProtonConfig; @@ -72,12 +73,12 @@ class DocumentDB : public IDocumentDBConfigOwner, public search::transactionlog::SyncProxy { private: - class MetricsUpdateHook : public metrics::MetricManager::UpdateHook { + class MetricsUpdateHook : public metrics::UpdateHook { DocumentDBMetricsCollection _metrics; DocumentDB &_db; public: MetricsUpdateHook(DocumentDB &s, const std::string &doc_type, size_t maxNumThreads) - : metrics::MetricManager::UpdateHook("documentdb-hook"), + : metrics::UpdateHook("documentdb-hook"), _metrics(doc_type, maxNumThreads), _db(s) {} void updateMetrics(const MetricLockGuard & ) override { _db.updateMetrics(_metrics); } @@ -316,7 +317,7 @@ public: * * @return metrics update hook **/ - metrics::MetricManager::UpdateHook & getMetricsUpdateHook(void) { + metrics::UpdateHook & getMetricsUpdateHook(void) { return _metricsHook; } diff --git a/storage/src/vespa/storage/bucketdb/lockablemap.h b/storage/src/vespa/storage/bucketdb/lockablemap.h index 25a1cf09d0b..76890c32f98 100644 --- a/storage/src/vespa/storage/bucketdb/lockablemap.h +++ b/storage/src/vespa/storage/bucketdb/lockablemap.h @@ -19,6 +19,7 @@ #include <list> #include <vespa/vespalib/util/sync.h> #include <vespa/vespalib/stllike/hash_map.h> +#include <vespa/vespalib/stllike/hash_set.h> #include <vespa/vespalib/stllike/asciistream.h> #include <vespa/document/bucket/bucketid.h> #include <vespa/storage/common/bucketoperationlogger.h> diff --git a/storage/src/vespa/storage/bucketdb/storagebucketdbinitializer.cpp b/storage/src/vespa/storage/bucketdb/storagebucketdbinitializer.cpp index 023dd31747a..58b07dd031b 100644 --- a/storage/src/vespa/storage/bucketdb/storagebucketdbinitializer.cpp +++ b/storage/src/vespa/storage/bucketdb/storagebucketdbinitializer.cpp @@ -13,11 +13,25 @@ #include <vespa/config-stor-filestor.h> #include <vespa/vespalib/io/fileutil.h> #include <vespa/config/config.h> +#include <vespa/vespalib/stllike/hash_set.h> LOG_SETUP(".storage.bucketdb.initializer"); namespace storage { +using BucketSet = vespalib::hash_set<document::BucketId, document::BucketId::hash>; + +struct BucketReadState { + typedef vespalib::LinkedPtr<BucketReadState> LP; + + BucketSet _pending; + document::BucketId _databaseIterator; + bool _done; + + BucketReadState() : _done(false) {} +}; + + StorageBucketDBInitializer::Config::Config(const config::ConfigUri & configUri) : _listPriority(0), _infoReadPriority(255), diff --git a/storage/src/vespa/storage/bucketdb/storagebucketdbinitializer.h b/storage/src/vespa/storage/bucketdb/storagebucketdbinitializer.h index 4b344a09076..da3f6b4e352 100644 --- a/storage/src/vespa/storage/bucketdb/storagebucketdbinitializer.h +++ b/storage/src/vespa/storage/bucketdb/storagebucketdbinitializer.h @@ -51,13 +51,13 @@ namespace storage { +class BucketReadState; + class StorageBucketDBInitializer : public StorageLink, public framework::HtmlStatusReporter, private framework::Runnable { typedef uint16_t Disk; - typedef vespalib::hash_set<document::BucketId, - document::BucketId::hash> BucketSet; typedef vespalib::hash_map<api::StorageMessage::Id, Disk> IdDiskMap; struct Config { @@ -126,21 +126,13 @@ class StorageBucketDBInitializer : public StorageLink, _gottenInitProgress(false), _doneListing(false), _doneInitializing(false) {} }; - struct BucketReadState { - typedef vespalib::LinkedPtr<BucketReadState> LP; - - BucketSet _pending; - document::BucketId _databaseIterator; - bool _done; - BucketReadState() : _done(false) {} - }; Config _config; System _system; Metrics _metrics; GlobalState _state; - std::vector<BucketReadState::LP> _readState; + std::vector<vespalib::LinkedPtr<BucketReadState>> _readState; public: StorageBucketDBInitializer(const config::ConfigUri&, diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp b/storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp index de0d3c464c9..342240f0be7 100644 --- a/storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp +++ b/storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp @@ -2,6 +2,7 @@ #include "filestormetrics.h" #include <vespa/metrics/loadmetric.hpp> #include <vespa/metrics/summetric.hpp> +#include <sstream> namespace storage { diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp index c523a24c69e..acc9cf248b4 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp +++ b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp @@ -3,6 +3,7 @@ #include <vespa/fastos/fastos.h> #include <vespa/storageframework/defaultimplementation/component/componentregisterimpl.h> #include <vespa/storageframework/storageframework.h> +#include <vespa/metrics/metricmanager.h> namespace storage { namespace framework { @@ -19,8 +20,9 @@ ComponentRegisterImpl::ComponentRegisterImpl() _threadPool(0), _upgradeFlag(NO_UPGRADE_SPECIAL_HANDLING_ACTIVE), _shutdownListener(0) -{ -} +{ } + +ComponentRegisterImpl::~ComponentRegisterImpl() { } void ComponentRegisterImpl::registerComponent(ManagedComponent& mc) @@ -139,12 +141,12 @@ ComponentRegisterImpl::registerMetric(metrics::Metric& m) } namespace { - struct MetricHookWrapper : public metrics::MetricManager::UpdateHook { + struct MetricHookWrapper : public metrics::UpdateHook { MetricUpdateHook& _hook; MetricHookWrapper(vespalib::stringref name, MetricUpdateHook& hook) - : metrics::MetricManager::UpdateHook(name.c_str()), + : metrics::UpdateHook(name.c_str()), _hook(hook) { } @@ -159,8 +161,7 @@ ComponentRegisterImpl::registerUpdateHook(vespalib::stringref name, SecondTime period) { vespalib::LockGuard lock(_componentLock); - metrics::MetricManager::UpdateHook::LP hookPtr( - new MetricHookWrapper(name, hook)); + metrics::UpdateHook::LP hookPtr(new MetricHookWrapper(name, hook)); _hooks.push_back(hookPtr); _metricManager->addMetricUpdateHook(*hookPtr, period.getTime()); } diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h index 633123efdf3..8e472eb9c08 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h +++ b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h @@ -17,12 +17,19 @@ */ #pragma once -#include <vespa/metrics/metricmanager.h> #include <vespa/storageframework/generic/component/componentregister.h> #include <vespa/storageframework/generic/component/managedcomponent.h> #include <vespa/storageframework/generic/metric/metricregistrator.h> #include <vespa/storageframework/generic/status/statusreportermap.h> #include <vespa/vespalib/util/sync.h> +#include <vespa/metrics/metricset.h> + +namespace metrics { + + class MetricManager; + class UpdateHook; + +} namespace storage { namespace framework { @@ -41,7 +48,7 @@ class ComponentRegisterImpl : public virtual ComponentRegister, std::vector<ManagedComponent*> _components; metrics::MetricSet _topMetricSet; - std::vector<metrics::MetricManager::UpdateHook::LP> _hooks; + std::vector<vespalib::LinkedPtr<metrics::UpdateHook>> _hooks; metrics::MetricManager* _metricManager; MemoryManagerInterface* _memoryManager; Clock* _clock; @@ -53,6 +60,7 @@ public: typedef std::unique_ptr<ComponentRegisterImpl> UP; ComponentRegisterImpl(); + ~ComponentRegisterImpl(); bool hasMetricManager() const { return (_metricManager != 0); } metrics::MetricManager& getMetricManager() { @@ -76,7 +84,7 @@ public: void registerUpdateHook(vespalib::stringref name, MetricUpdateHook& hook, SecondTime period); - metrics::MetricLockGuard getMetricManagerLock() override; + vespalib::MonitorGuard getMetricManagerLock() override; void registerShutdownListener(ShutdownListener&); }; diff --git a/storageframework/src/vespa/storageframework/generic/component/component.cpp b/storageframework/src/vespa/storageframework/generic/component/component.cpp index ba741aade2a..47897f8adab 100644 --- a/storageframework/src/vespa/storageframework/generic/component/component.cpp +++ b/storageframework/src/vespa/storageframework/generic/component/component.cpp @@ -76,13 +76,13 @@ Component::registerMetricUpdateHook(MetricUpdateHook& hook, SecondTime period) } } -metrics::MetricLockGuard +vespalib::MonitorGuard Component::getMetricManagerLock() { if (_metricReg != 0) { return _metricReg->getMetricManagerLock(); } else { - return metrics::MetricLockGuard(); + return vespalib::MonitorGuard(); } } diff --git a/storageframework/src/vespa/storageframework/generic/component/component.h b/storageframework/src/vespa/storageframework/generic/component/component.h index 063b1102b13..8bbf0dc192a 100644 --- a/storageframework/src/vespa/storageframework/generic/component/component.h +++ b/storageframework/src/vespa/storageframework/generic/component/component.h @@ -71,7 +71,7 @@ #include <vespa/storageframework/generic/thread/runnable.h> #include <vespa/storageframework/generic/thread/thread.h> #include <vespa/storageframework/generic/clock/clock.h> -#include <vespa/metrics/metricmanager.h> +#include <vespa/vespalib/util/sync.h> #include <atomic> namespace storage { @@ -162,7 +162,7 @@ public: * If you need to modify the metric sets that have been registered, you need * to hold the metric manager lock while you do it. */ - metrics::MetricLockGuard getMetricManagerLock(); + vespalib::MonitorGuard getMetricManagerLock(); /** Get the name of the component. Must be a unique name. */ const vespalib::string& getName() const { return _name; } diff --git a/storageframework/src/vespa/storageframework/generic/component/componentregister.h b/storageframework/src/vespa/storageframework/generic/component/componentregister.h index d43f9faf4a0..7b863ec77a9 100644 --- a/storageframework/src/vespa/storageframework/generic/component/componentregister.h +++ b/storageframework/src/vespa/storageframework/generic/component/componentregister.h @@ -11,6 +11,8 @@ */ #pragma once +#include <vespa/vespalib/stllike/string.h> + namespace storage { namespace framework { diff --git a/storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h b/storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h index d300a4508af..12d39b5f313 100644 --- a/storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h +++ b/storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h @@ -11,7 +11,7 @@ #pragma once #include <vespa/vespalib/stllike/string.h> -#include <vespa/metrics/metricmanager.h> +#include <vespa/vespalib/util/sync.h> namespace storage { namespace framework { @@ -23,7 +23,7 @@ struct MetricRegistrator { virtual void registerUpdateHook(vespalib::stringref name, MetricUpdateHook& hook, SecondTime period) = 0; - virtual metrics::MetricLockGuard getMetricManagerLock() = 0; + virtual vespalib::MonitorGuard getMetricManagerLock() = 0; }; } // framework diff --git a/storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h b/storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h index 741e0ade787..07fdf1b5a6e 100644 --- a/storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h +++ b/storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h @@ -7,14 +7,15 @@ */ #pragma once -#include <vespa/vespalib/stllike/string.h> -#include <vespa/metrics/metricmanager.h> +namespace vespalib { + class MonitorGuard; +} namespace storage { namespace framework { struct MetricUpdateHook { - typedef metrics::MetricManager::UpdateHook::MetricLockGuard MetricLockGuard; + using MetricLockGuard = vespalib::MonitorGuard; virtual ~MetricUpdateHook() {} virtual void updateMetrics(const MetricLockGuard &) = 0; |