aboutsummaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-08-26 07:22:19 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-08-26 07:22:19 +0000
commit342e8e9753386b3e3e3d9a823723df63b8971308 (patch)
tree27969ec412e91fce6d2d27bdf09522c35bc624cf /metrics
parent78133f8c95b11b460aa4fd9ad89bd00bb716c6f8 (diff)
Avoid calling time(nullptr)
Diffstat (limited to 'metrics')
-rw-r--r--metrics/src/vespa/metrics/metricmanager.cpp7
-rw-r--r--metrics/src/vespa/metrics/metricmanager.h1
-rw-r--r--metrics/src/vespa/metrics/state_api_adapter.cpp20
3 files changed, 15 insertions, 13 deletions
diff --git a/metrics/src/vespa/metrics/metricmanager.cpp b/metrics/src/vespa/metrics/metricmanager.cpp
index dcc02696e2d..db2e5affa03 100644
--- a/metrics/src/vespa/metrics/metricmanager.cpp
+++ b/metrics/src/vespa/metrics/metricmanager.cpp
@@ -24,10 +24,15 @@ MetricManager::ConsumerSpec::ConsumerSpec() = default;
MetricManager::ConsumerSpec::~ConsumerSpec() = default;
time_t
-MetricManager::Timer::getTime() const {
+MetricManager::Timer::secondsSinceEpoch() {
return std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();
}
+time_t
+MetricManager::Timer::getTime() const {
+ return secondsSinceEpoch();
+}
+
void
MetricManager::assertMetricLockLocked(const MetricLockGuard& g) const {
if (!g.monitors(_waiter)) {
diff --git a/metrics/src/vespa/metrics/metricmanager.h b/metrics/src/vespa/metrics/metricmanager.h
index f2b2926873f..2edf39d67f1 100644
--- a/metrics/src/vespa/metrics/metricmanager.h
+++ b/metrics/src/vespa/metrics/metricmanager.h
@@ -70,6 +70,7 @@ public:
struct Timer {
virtual ~Timer() {}
+ static time_t secondsSinceEpoch();
virtual time_t getTime() const;
virtual time_t getTimeInMilliSecs() const { return getTime() * 1000; }
};
diff --git a/metrics/src/vespa/metrics/state_api_adapter.cpp b/metrics/src/vespa/metrics/state_api_adapter.cpp
index ebb4fb4fd49..20421ebdbb2 100644
--- a/metrics/src/vespa/metrics/state_api_adapter.cpp
+++ b/metrics/src/vespa/metrics/state_api_adapter.cpp
@@ -15,8 +15,7 @@ StateApiAdapter::getMetrics(const vespalib::string &consumer)
if (periods.empty()) {
return ""; // no configuration yet
}
- const metrics::MetricSnapshot &snapshot(
- _manager.getMetricSnapshot(guard, periods[0]));
+ const metrics::MetricSnapshot &snapshot(_manager.getMetricSnapshot(guard, periods[0]));
vespalib::asciistream json;
vespalib::JsonStream stream(json);
metrics::JsonWriter metricJsonWriter(stream);
@@ -31,16 +30,13 @@ StateApiAdapter::getTotalMetrics(const vespalib::string &consumer)
_manager.updateMetrics(true);
metrics::MetricLockGuard guard(_manager.getMetricLock());
_manager.checkMetricsAltered(guard);
- time_t currentTime = time(0);
- std::unique_ptr<metrics::MetricSnapshot> generated(
- new metrics::MetricSnapshot(
- "Total metrics from start until current time", 0,
- _manager.getTotalMetricSnapshot(guard).getMetrics(),
- true));
- _manager.getActiveMetrics(guard)
- .addToSnapshot(*generated, false, currentTime);
- generated->setFromTime(
- _manager.getTotalMetricSnapshot(guard).getFromTime());
+ time_t currentTime = MetricManager::Timer::secondsSinceEpoch();
+ auto generated = std::make_unique<metrics::MetricSnapshot>(
+ "Total metrics from start until current time", 0,
+ _manager.getTotalMetricSnapshot(guard).getMetrics(),
+ true);
+ _manager.getActiveMetrics(guard).addToSnapshot(*generated, false, currentTime);
+ generated->setFromTime(_manager.getTotalMetricSnapshot(guard).getFromTime());
const metrics::MetricSnapshot &snapshot = *generated;
vespalib::asciistream json;
vespalib::JsonStream stream(json);