@Override
  public void doPrefetch(int index, long relativeOffset, long size) throws IOException {
    BlobReadInfo blobReadInfo = blobReadInfoList.get(index);
    try {
      if (!blobReadInfo.isBlobDownloaded()) {
        blobReadInfo.downloadBlob(blobStore);
      }
      ByteBuf byteBuf = blobReadInfoList.get(index).getBlobContent();
      byteBuf.setIndex((int) (relativeOffset), (int) (relativeOffset + size));
    } catch (StoreException ex) {
      throw new IOException("Prefetch of cloud blob " + blobReadInfo.getBlobId().getID() + " failed", ex);
    }
  }
An implementation of {@code MessageReadSet} for cloud based storage
ambry-cloud/src/main/java/com/github/ambry/cloud/CloudMessageReadSet.java