@Override
public void start() {
LocalDateTime now = LocalDateTime.now();
LocalDateTime nextHour = now.truncatedTo(HOURS).plusHours(1);
Duration delay = Duration.between(now.atOffset(ZoneOffset.UTC), nextHour.atOffset(ZoneOffset.UTC));
Duration oneHour = Duration.ofHours(1);
s_logger.warn("Now {} Next {} Delay {} {}", new Object[] {now, nextHour, delay, delay.toMillis() });
_timerExecutor.scheduleAtFixedRate(new SnapshotTask(), delay.toMillis(), oneHour.toMillis(), TimeUnit.MILLISECONDS);
if (getInitializationFileName() != null) {
initializeFromFile(getInitializationFileName());