public void setupRouter(final Router router) throws IllegalStateException {
    if (!this.router.compareAndSet(null, router)) {
      throw new IllegalStateException("Router already initialized");
    } else if (config.useNewZNodePath) {
      initialFetchAndSchedule();
    }
  }
set the router to the given one. This is a blocking call. This function would block until it fetches the
{@link Account} metadata from ambry server.
@param router The router to set.
@throws IllegalStateException when the router already set up.
ambry-account/src/main/java/com/github/ambry/account/HelixAccountService.java