private MetricManager(ManagerConfig settings, Updater<Bucket, Sample> updater) {
log.log(LogLevel.CONFIG, "setting up simple metrics gathering." +
" reportPeriodSeconds=" + settings.reportPeriodSeconds() +
", pointsToKeepPerMetric=" + settings.pointsToKeepPerMetric());
metricsCollection = new ThreadLocalDirectory<>(updater);
final AtomicReference<Bucket> currentSnapshot = new AtomicReference<>(null);
executor = new ScheduledThreadPoolExecutor(1);
executor.scheduleAtFixedRate(new MetricAggregator(metricsCollection, currentSnapshot, settings), 1, 1, TimeUnit.SECONDS);
receiver = new MetricReceiver(metricsCollection, currentSnapshot);
}