diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-08-26 07:22:19 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-08-26 07:22:19 +0000 |
commit | 342e8e9753386b3e3e3d9a823723df63b8971308 (patch) | |
tree | 27969ec412e91fce6d2d27bdf09522c35bc624cf /metrics | |
parent | 78133f8c95b11b460aa4fd9ad89bd00bb716c6f8 (diff) |
Avoid calling time(nullptr)
Diffstat (limited to 'metrics')
-rw-r--r-- | metrics/src/vespa/metrics/metricmanager.cpp | 7 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/metricmanager.h | 1 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/state_api_adapter.cpp | 20 |
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); |