@Override
  public void addDataNodeConfigChangeListener(DataNodeConfigChangeListener listener) throws Exception {
    helixManager.addInstanceConfigChangeListener((InstanceConfigChangeListener) (instanceConfigs, context) -> {
      Iterable<DataNodeConfig> dataNodeConfigs =
          () -> instanceConfigs.stream().map(converter::convert).filter(Objects::nonNull).iterator();
      listener.onDataNodeConfigChange(dataNodeConfigs);
    });
  }
@param helixManager the {@link HelixManager} to use as the source of truth for {@link InstanceConfig}s.
@param clusterMapConfig the {@link ClusterMapConfig} to use.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/InstanceConfigToDataNodeConfigAdapter.java