public Pair<ServerErrorCode, BlobProperties> getBlobProperties(DataNodeId dataNodeId, BlobId blobId,
      GetOption getOption, ClusterMap clusterMap) throws Exception {
    Pair<Pair<ServerErrorCode, InputStream>, ResponseInfo> response =
        getGetResponse(dataNodeId, blobId, MessageFormatFlags.BlobProperties, getOption, clusterMap);
    InputStream stream = response.getFirst().getSecond();
    BlobProperties blobProperties = stream != null ? MessageFormatRecord.deserializeBlobProperties(stream) : null;
    response.getSecond().release();
    return new Pair<>(response.getFirst().getFirst(), blobProperties);
  }
Gets {@link BlobProperties} for {@code blobId}.
@param dataNodeId the {@link DataNodeId} to contact.
@param blobId the {@link BlobId} to operate on.
@param getOption the {@link GetOption} to send with the {@link GetRequest}.
@param clusterMap the {@link ClusterMap} to use.
@return the {@link ServerErrorCode} and {@link BlobProperties} of {@code blobId}.
@throws Exception
ambry-tools/src/main/java/com/github/ambry/tools/admin/ServerAdminTool.java