@Override
  public void registerListener(Listener listener) {
    Objects.requireNonNull(listener, "Listener has to be non-null");
    if (!this.listener.compareAndSet(null, listener)) {
      throw new IllegalStateException("Listener already registered");
    }
  }
Constructor to instantiate a {@link MySqlStorageUsageRefresher}.
@param accountStatsStore The {@link AccountStatsStore} to interact with mysql database.
@param scheduler The {@link ScheduledExecutorService} to schedule background tasks.
@param config The {@link StorageQuotaConfig}.
@param metrics The {@link StorageQuotaServiceMetrics} to update metrics
@throws IOException
ambry-quota/src/main/java/com/github/ambry/quota/storage/MySqlStorageUsageRefresher.java