diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-28 21:16:26 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-12-12 02:55:40 +0100 |
commit | e1a678feb2deddeab5a78be77e16f3cdf0a614a9 (patch) | |
tree | 342fdd803d4597d05e2cef34d667fba2541f9f50 /storageframework | |
parent | e7195ab5e2d76848c1d3ac1004f54edf19dfb72d (diff) |
Loosen up the metrics stuff further.
Diffstat (limited to 'storageframework')
7 files changed, 30 insertions, 18 deletions
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; |