class DefaultTierSlaUpdater implements TierSlaUpdater {

    @Override
    public Observable<TieredQueueSlas> tieredQueueSlaUpdates() {
        return Observable.interval(0, schedulerConfiguration.getTierSlaUpdateIntervalMs(), TimeUnit.MILLISECONDS, scheduler)
                .flatMap(tick -> {
                    try {
                        return Observable.just(recomputeSLAs());
                    } catch (Exception e) {
                        logger.warn("Failed to recompute tier SLAs", e);
                        return Observable.empty();
                    }
                }).share();
    }

    @Inject public  DefaultTierSlaUpdater(SchedulerConfiguration schedulerConfiguration,
                                 ApplicationSlaManagementService applicationSlaManagementService,
                                 AvailableCapacityService availableCapacityService);
      DefaultTierSlaUpdater(SchedulerConfiguration schedulerConfiguration,
                          ApplicationSlaManagementService applicationSlaManagementService,
                          AvailableCapacityService availableCapacityService,
                          Scheduler scheduler);

}