private void initializeContainerStorageUsageMonthlyBase() {
    long startTimeMs = System.currentTimeMillis();
    // First try to get the monthly base storage usage from backup
    try {
      if (backupFileManager != null) {
        logger.info("Fetching monthly base from backup directory for this month: {}", currentMonth);
        containerStorageUsageMonthlyBase = backupFileManager.getBackupFileContent(currentMonth);
      }
    } catch (IOException e) {
      logger.error("Failed to get container monthly usage for {} from backup", currentMonth, e);
    }

    if (containerStorageUsageMonthlyBase == null) {
      try {
        // If we are here, then loading monthly base from backup file failed. We have to fetch it from database.
        logger.info("Fetching monthly base from mysql database for this month: {}", currentMonth);
        containerStorageUsageMonthlyBase =
            convertAggregatedAccountStorageStatsToMap(accountStatsStore.queryMonthlyAggregatedAccountStorageStats(),
                config.usePhysicalStorage);
        // If the monthly base is indeed for this month, then try to persist it in the backup file.
        // There is a chance that the database has a snapshot from last month since the aggregation task is executed
        // every few minutes(maybe hours). Before the first aggregation task of this month is executed, the database
        // would have the snapshot of last month.
        if (currentMonth.equals(accountStatsStore.queryRecordedMonth())) {
          tryPersistMonthlyUsage();
        }
      } catch (Exception e) {
        throw new IllegalStateException("Unable to fetch monthly storage usage from mysql", e);
      }
    }
    metrics.mysqlRefresherInitTimeMs.update(System.currentTimeMillis() - startTimeMs);
  }
Initialize {@link #containerStorageUsageMonthlyBase}. Try to load it from backup files first, if backup file doesn't
exist for this month, then load it from mysql database.
ambry-quota/src/main/java/com/github/ambry/quota/storage/MySqlStorageUsageRefresher.java