@Override
    public void onRoutingTableChange() {

      // wait for start() to complete
      try {
        startupLatch.await();
      } catch (InterruptedException e) {
        logger.warn("Waiting for startup is interrupted.");
        throw new IllegalStateException(
            "Replication manager startup is interrupted while handling routing table change");
      }

      if (leaderBasedReplicationAdmin != null) {
        // Refreshes the remote leader information for all local leader partitions maintained in the in-mem structure in LeaderBasedReplicationAdmin.
        // Thread safety is ensured in LeaderBasedReplicationAdmin::refreshPeerLeadersForAllPartitions().
        leaderBasedReplicationAdmin.refreshPeerLeadersForLeaderPartitions();
      }
    }
{@inheritDoc}
Note that, this method should be thread-safe because multiple threads (from different cluster change handlers) may
concurrently call this method.
ambry-replication/src/main/java/com/github/ambry/replication/ReplicationEngine.java