public void handleInstanceConfigChange(List<InstanceConfig> instanceConfigs) {
      if (!instanceConfigInitialized) {
        logger.info("Received initial notification for InstanceConfig from helix cluster {} in dc {}", helixClusterName,
            dcName);
        instanceConfigInitialized = true;
      } else {
        logger.info("InstanceConfig change triggered from helix cluster {} in dc {}", helixClusterName, dcName);
      }
      Map<String, InstanceConfig> instanceToConfig = new HashMap<>();
      Map<String, Set<String>> tagToInstances = new HashMap<>();
      for (InstanceConfig instanceConfig : instanceConfigs) {
        String instanceName = instanceConfig.getInstanceName();
        instanceToConfig.put(instanceName, instanceConfig);
        List<String> tags = instanceConfig.getTags();
        if (tags != null && !tags.isEmpty()) {
          for (String tag : tags) {
            tagToInstances.computeIfAbsent(tag, k -> new HashSet<>()).add(instanceName);
          }
        }
      }
      // Update the class member
      instanceNameToInstanceConfig.keySet().retainAll(instanceToConfig.keySet());
      tagToInstanceNames.keySet().retainAll(tagToInstances.keySet());
      instanceNameToInstanceConfig.putAll(instanceToConfig);
      tagToInstanceNames.putAll(tagToInstances);
      helixClusterManagerMetrics.instanceConfigChangeTriggerCount.inc();
    }
Triggered whenever the instance configs for participants have changed. The list of {@link InstanceConfig} contains
all the up-to-date config for instances in local datacenter.
@param instanceConfigs
ambry-clustermap/src/main/java/com/github/ambry/clustermap/HelixClusterManager.java