@Override
  public RecoveryTestClusterManager getClusterMap() throws IOException {
    if (recoveryTestClusterManagerRef.get() == null) {
      StaticClusterManager staticClusterManager = staticClusterAgentsFactory.getClusterMap();
      HelixClusterManager helixClusterManager = null;
      try {
        helixClusterManager = helixClusterAgentsFactory.getClusterMap();
      } catch (Exception e) {
        logger.error("Helix cluster manager instantiation failed with exception", e);
        throw new IOException(
            String.format("Helix cluster manager instantiation failed with exception %s", e.getMessage()));
      }
      recoveryTestClusterManagerRef.compareAndSet(null,
          new RecoveryTestClusterManager(staticClusterManager, helixClusterManager));
    }
    return recoveryTestClusterManagerRef.get();
  }
Create and return a {@link RecoveryTestClusterManager}.
@return the constructed {@link RecoveryTestClusterManager}.
@throws IOException if constructing the underlying {@link StaticClusterManager} or the {@link HelixClusterManager}
throws an Exception.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/RecoveryTestClusterAgentsFactory.java