private List<String> getMismatchDetails(String blobId, Map<DataNodeId, ServerResponse> dataNodeIdBlobContentMap) {
    List<String> mismatchDetailsList = new ArrayList<>();
    Iterator<DataNodeId> dataNodeIdIterator = dataNodeIdBlobContentMap.keySet().iterator();
    DataNodeId dataNodeId1 = dataNodeIdIterator.next();
    ServerResponse dataNode1ServerResponse = dataNodeIdBlobContentMap.get(dataNodeId1);
    while (dataNodeIdIterator.hasNext()) {
      DataNodeId dataNodeId2 = dataNodeIdIterator.next();
      ServerResponse dataNode2ServerResponse = dataNodeIdBlobContentMap.get(dataNodeId2);
      String mismatchDetails = dataNode1ServerResponse.getMismatchDetails(dataNode2ServerResponse);
      if (mismatchDetails != null) {
        mismatchDetails = "Mismatch for [" + blobId + "] between [" + dataNodeId1 + "] and [" + dataNodeId2 + "] - "
            + mismatchDetails;
        mismatchDetailsList.add(mismatchDetails);
      }
    }
    return mismatchDetailsList;
  }
Compares {@link ServerResponse} for a list of replicas.
@param blobId the blobId for which the comparison is made
@param dataNodeIdBlobContentMap the map containing the replica to their respective {@link ServerResponse}
@return a list of details if there are mismatches. Zero sized list if there aren't any mismatches.
ambry-tools/src/main/java/com/github/ambry/tools/admin/BlobValidator.java