public CompletionStage<Void> deleteSnapshotIndexBlob(String snapshotIndexBlobId, Metadata metadata) {
    Preconditions.checkState(StringUtils.isNotBlank(snapshotIndexBlobId));
    LOG.debug("Deleting SnapshotIndex blob: {} from blob store", snapshotIndexBlobId);
    String opName = "deleteSnapshotIndexBlob: " + snapshotIndexBlobId;
    return FutureUtil.executeAsyncWithRetries(opName, () ->
        blobStoreManager.delete(snapshotIndexBlobId, metadata).toCompletableFuture(), isCauseNonRetriable(), executor, retryPolicyConfig);
  }
WARNING: This method deletes the **SnapshotIndex blob** from the snapshot. This should only be called to clean
up an older snapshot **AFTER** all the files and sub-dirs to be deleted from this snapshot are already deleted
using {@link #cleanUpDir(DirIndex, Metadata)}

@param snapshotIndexBlobId blob ID of SnapshotIndex blob to delete
@return a future that completes when the index blob is deleted from remote store.
samza-core/src/main/java/org/apache/samza/storage/blobstore/util/BlobStoreUtil.java