aboutsummaryrefslogtreecommitdiffstats
path: root/storageframework
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-11-28 21:16:26 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2016-12-12 02:55:40 +0100
commite1a678feb2deddeab5a78be77e16f3cdf0a614a9 (patch)
tree342fdd803d4597d05e2cef34d667fba2541f9f50 /storageframework
parente7195ab5e2d76848c1d3ac1004f54edf19dfb72d (diff)
Loosen up the metrics stuff further.
Diffstat (limited to 'storageframework')
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp13
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h14
-rw-r--r--storageframework/src/vespa/storageframework/generic/component/component.cpp4
-rw-r--r--storageframework/src/vespa/storageframework/generic/component/component.h4
-rw-r--r--storageframework/src/vespa/storageframework/generic/component/componentregister.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h4
-rw-r--r--storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h7
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;