@Override
  public DataNodeConfig get(String instanceName) {
    DataNodeConfig primaryResult = primarySource.get(instanceName);
    try {
      DataNodeConfig secondaryResult = secondarySource.get(instanceName);
      if (!Objects.equals(primaryResult, secondaryResult)) {
        metrics.getSwallowedErrorCount.inc();
        LOGGER.error("Results differ for get({}). sourceOfTruth={}, secondarySource={}", instanceName, primaryResult,
            secondaryResult);
      }
    } catch (Exception e) {
      metrics.getSwallowedErrorCount.inc();
      LOGGER.error("Error from secondarySource.get({})", instanceName, e);
    }
    return primaryResult;
  }
@param primarySource the source of truth for users of this class.
@param secondarySource all operations are also attempted against this source, but if the results of the operation
                       differ from the primary, inconsistencies are just recorded with logs and metrics.
@param time a {@link Time} instance used for consistency verification.
@param metrics a {@link DataNodeConfigSourceMetrics} instance to use.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/CompositeDataNodeConfigSource.java