@Override
  public synchronized void init() {
    if (isReady.get()) {
      LOGGER.warn("InMemoryCuQuotaSource is already initialized.");
      return;
    }
    feUsage.set(new CapacityUnit());
    cuQuota.keySet().forEach(key -> cuUsage.put(key, new CapacityUnit()));
    usageRefresher.scheduleAtFixedRate(this::resetQuotaUsage, aggregationWindowsInSecs, aggregationWindowsInSecs,
        TimeUnit.SECONDS);
    quotaMetrics.createMetricsForQuotaResources(new ArrayList<>(cuQuota.keySet()));
    isReady.set(true);
  }
Constructor for {@link AmbryCUQuotaSource}.
@param quotaConfig {@link QuotaConfig} object.
@param accountService {@link AccountService} object.
@param quotaMetrics {@link QuotaMetrics} object.
@param routerConfig {@link RouterConfig} object.
@throws IOException in case of any exception.
ambry-quota/src/main/java/com/github/ambry/quota/capacityunit/AmbryCUQuotaSource.java