public DataNodeConfigSource getDataNodeConfigSource(ClusterMapConfig clusterMapConfig, String zkAddr,
      DataNodeConfigSourceMetrics metrics) {
    return dataNodeConfigSources.computeIfAbsent(zkAddr,
        k -> buildDataNodeConfigSource(clusterMapConfig, zkAddr, metrics));
  }
@param clusterMapConfig the {@link ClusterMapConfig} to use.
@param zkAddr the ZooKeeper address to connect to. If a {@link HelixManager} is required and one is already in the
              pool with this address, it will be reused.
@param metrics the {@link DataNodeConfigSourceMetrics} to use.
@return either a new instance of {@link DataNodeConfigSource} with the supplied configuration, or one from the pool
        if there is already one created for this address.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/HelixFactory.java