Map<BlobId, List<String>> validateBlobsOnDatacenter(String datacenter, List<BlobId> blobIds, GetOption getOption,
      ClusterMap clusterMap, StoreKeyFactory storeKeyFactory) throws InterruptedException {
    Map<BlobId, List<String>> mismatchDetailsMap = new HashMap<>();
    for (BlobId blobId : blobIds) {
      LOGGER.info("Validating blob {} in {}", blobId, datacenter);
      List<String> mismatchDetails =
          validateBlobOnDatacenter(datacenter, blobId, getOption, clusterMap, storeKeyFactory);
      mismatchDetailsMap.put(blobId, mismatchDetails);
    }
    return mismatchDetailsMap;
  }
Validates each {@link BlobId} in {@code blobIds} on all of its replicas in {@code datacenter}.
@param datacenter the datacenter in which the blob ids have to be validated.
@param blobIds the {@link BlobId}s to operate on.
@param getOption the {@link GetOption} to use with the {@link com.github.ambry.protocol.GetRequest}.
@param clusterMap the {@link ClusterMap} instance to use.
@param storeKeyFactory the {@link StoreKeyFactory} to use.
@return a mapping from {@link BlobId} to details about any mismatches.
@throws InterruptedException
ambry-tools/src/main/java/com/github/ambry/tools/admin/BlobValidator.java