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;
    }
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
container-core/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java