Map<BlobId, ServerErrorCode> validateBlobsOnReplica(DataNodeId dataNodeId, List<BlobId> blobIds, GetOption getOption,
      ClusterMap clusterMap, StoreKeyFactory storeKeyFactory) throws InterruptedException {
    Map<BlobId, ServerErrorCode> blobIdToErrorCode = new HashMap<>();
    for (BlobId blobId : blobIds) {
      LOGGER.info("Validating blob {} in {}", blobId, dataNodeId);
      ServerResponse response = getRecordFromNode(dataNodeId, blobId, getOption, clusterMap, storeKeyFactory);
      blobIdToErrorCode.put(blobId, response.serverErrorCode);
    }
    return blobIdToErrorCode;
  }
Validates each {@link BlobId} in {@code blobIds} on {@code dataNodeId}.
@param dataNodeId the {@link DataNodeId} where the blobs 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 the response error codes from {@code dataNodeId}
@throws InterruptedException
ambry-tools/src/main/java/com/github/ambry/tools/admin/BlobValidator.java