private synchronized void updateOrInitialize(String changedPath) {
      try {
        if (initializeIfNeeded()) {
          ZNRecord record = propertyStore.get(changedPath, null, AccessOption.PERSISTENT);
          if (record != null) {
            listener.onDataNodeConfigChange(lazyIterable(Collections.singleton(record)));
          } else {
            LOGGER.info("DataNodeConfig at path {} not found", changedPath);
          }
        }
      } catch (Exception e) {
        LOGGER.error("Exception during DataNodeConfig change", e);
      }
    }
Either perform a full initialization or notify the listener about an incremental update to a path. This should be
called from the event executor thread.
@param changedPath the path that changed.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/PropertyStoreToDataNodeConfigAdapter.java