long getLatestContainerDeletionTime() throws CloudStorageException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream(Long.BYTES);
    requestAgent.doWithRetries(() -> {
      try {
        azureBlobDataAccessor.downloadFileAsync(AzureCloudDestination.CHECKPOINT_CONTAINER,
            CONTAINER_DELETION_CHECKPOINT_FILE, null, baos, false).join();
        return null;
      } catch (CompletionException e) {
        Exception ex = Utils.extractFutureExceptionCause(e);
        if (ex instanceof BlobStorageException
            && ((BlobStorageException) ex).getErrorCode() == BlobErrorCode.BLOB_NOT_FOUND) {
          return -1;
        }
        throw toCloudStorageException("Error downloading checkpoint file for container deletion",
            Utils.extractFutureExceptionCause(e), azureMetrics);
      }
    }, "read-container-deletion-checkpoint", null);
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(baos.toByteArray());
    buffer.flip();
    if (!buffer.hasRemaining()) {
      return -1;
    }
    // TODO test what happens if the downloaded file is empty
    return buffer.getLong();
  }
Read the deprecated container update checkpoint from Azure Blob Store.
@return latest delete trigger time checkpoint for deprecated containers.
@throws CloudStorageException in case of any error.
ambry-cloud/src/main/java/com/github/ambry/cloud/azure/AzureContainerCompactor.java