public CompletionStage<Void> removeTTL(String indexBlobId, SnapshotIndex snapshotIndex, Metadata metadata) {
    SnapshotMetadata snapshotMetadata = snapshotIndex.getSnapshotMetadata();
    LOG.debug("Marking contents of SnapshotIndex: {} to never expire", snapshotMetadata.toString());

    String opName = "removeTTL for SnapshotIndex for checkpointId: " + snapshotMetadata.getCheckpointId();
    Supplier<CompletionStage<Void>> removeDirIndexTTLAction =
      () -> removeTTL(snapshotIndex.getDirIndex(), metadata).toCompletableFuture();
    CompletableFuture<Void> dirIndexTTLRemovalFuture =
        FutureUtil.executeAsyncWithRetries(opName, removeDirIndexTTLAction, isCauseNonRetriable(), executor, retryPolicyConfig);

    return dirIndexTTLRemovalFuture.thenComposeAsync(aVoid -> {
      String op2Name = "removeTTL for indexBlobId: " + indexBlobId;
      Supplier<CompletionStage<Void>> removeIndexBlobTTLAction =
        () -> blobStoreManager.removeTTL(indexBlobId, metadata).toCompletableFuture();
      return FutureUtil.executeAsyncWithRetries(op2Name, removeIndexBlobTTLAction, isCauseNonRetriable(), executor, retryPolicyConfig);
    }, executor);
  }
Marks all the blobs associated with an {@link SnapshotIndex} to never expire, including the SnapshotIndex
@param snapshotIndex {@link SnapshotIndex} of the remote snapshot
@param metadata {@link Metadata} related to the request
@return A future that completes when all the files and subdirs associated with this remote snapshot are marked to
never expire.
samza-core/src/main/java/org/apache/samza/storage/blobstore/util/BlobStoreUtil.java