@Override
  public AccountService getAccountService() {
    try {
      long startTimeMs = System.currentTimeMillis();
      logger.info("Starting a HelixAccountService");
      HelixPropertyStore<ZNRecord> helixStore =
          CommonUtils.createHelixPropertyStore(accountServiceConfig.zkClientConnectString, storeConfig, null);
      logger.info("HelixPropertyStore started with zkClientConnectString={}, zkClientSessionTimeoutMs={}, "
              + "zkClientConnectionTimeoutMs={}, rootPath={}", accountServiceConfig.zkClientConnectString,
          storeConfig.zkClientSessionTimeoutMs, storeConfig.zkClientConnectionTimeoutMs, storeConfig.rootPath);
      ScheduledExecutorService scheduler =
          accountServiceConfig.updaterPollingIntervalMs > 0 ? Utils.newScheduler(1, HELIX_ACCOUNT_UPDATER_PREFIX, false)
              : null;
      HelixAccountService helixAccountService =
          new HelixAccountService(helixStore, accountServiceMetrics, notifier, scheduler, accountServiceConfig);
      long spentTimeMs = System.currentTimeMillis() - startTimeMs;
      logger.info("HelixAccountService started, took {} ms", spentTimeMs);
      accountServiceMetrics.startupTimeInMs.update(spentTimeMs);
      return helixAccountService;
    } catch (Exception e) {
      throw new IllegalStateException("Could not instantiate HelixAccountService", e);
    }
  }
Constructor.
@param storeConfig The {@link HelixPropertyStoreConfig} to use.
@param accountServiceConfig The {@link HelixAccountServiceConfig} to use.
@param accountServiceMetrics The {@link AccountServiceMetrics} to report metrics.
@param notifier The {@link Notifier} to start a {@link HelixAccountService}.
ambry-account/src/main/java/com/github/ambry/account/HelixAccountServiceFactory.java