summaryrefslogtreecommitdiffstats
path: root/simplemetrics/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java
diff options
context:
space:
mode:
Diffstat (limited to 'simplemetrics/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java')
-rw-r--r--simplemetrics/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java71
1 files changed, 0 insertions, 71 deletions
diff --git a/simplemetrics/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java b/simplemetrics/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java
deleted file mode 100644
index 7168eb49676..00000000000
--- a/simplemetrics/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.metrics.simple;
-
-import java.util.List;
-import java.util.concurrent.atomic.AtomicReference;
-
-import com.yahoo.concurrent.ThreadLocalDirectory;
-import com.yahoo.metrics.ManagerConfig;
-
-/**
- * Worker thread to collect the data stored in worker threads and build
- * snapshots for external consumption. Using the correct executor gives the
- * necessary guarantees for this being invoked from only a single thread.
- *
- * @author Steinar Knutsen
- */
-class MetricAggregator implements Runnable {
-
- private final ThreadLocalDirectory<Bucket, Sample> metricsCollection;
- private final AtomicReference<Bucket> currentSnapshot;
- private int generation = 0;
- private final Bucket[] buffer;
- private long fromMillis;
- private final DimensionCache dimensions;
-
- MetricAggregator(ThreadLocalDirectory<Bucket, Sample> metricsCollection, AtomicReference<Bucket> currentSnapshot,
- ManagerConfig settings) {
- if (settings.reportPeriodSeconds() < 10) {
- throw new IllegalArgumentException("Do not use this metrics implementation" +
- " if report periods of less than 10 seconds is desired.");
- }
- buffer = new Bucket[settings.reportPeriodSeconds()];
- dimensions = new DimensionCache(settings.pointsToKeepPerMetric());
- fromMillis = System.currentTimeMillis();
- this.metricsCollection = metricsCollection;
- this.currentSnapshot = currentSnapshot;
- }
-
- @Override
- public void run() {
- Bucket toDelete = updateBuffer();
- createSnapshot(toDelete);
- }
-
- private void createSnapshot(Bucket toDelete) {
- Bucket toPresent = new Bucket();
- for (Bucket b : buffer) {
- if (b == null) {
- continue;
- }
- toPresent.merge(b);
- }
- dimensions.updateDimensionPersistence(toDelete, toPresent);
- currentSnapshot.set(toPresent);
- }
-
- private Bucket updateBuffer() {
- List<Bucket> buckets = metricsCollection.fetch();
- long toMillis = System.currentTimeMillis();
- int bucketIndex = generation++ % buffer.length;
- Bucket bucketToDelete = buffer[bucketIndex];
- Bucket latest = new Bucket(fromMillis, toMillis);
- for (Bucket b : buckets) {
- latest.merge(b, true);
- }
- buffer[bucketIndex] = latest;
- this.fromMillis = toMillis;
- return bucketToDelete;
- }
-
-}