public CompletableFuture<Void> asyncPrune(Supplier<Set<Long>> initStreamSetObjectIdsSupplier) {
        if (pruned.compareAndSet(false, true)) {
            CompletableFuture<Void> cf = new CompletableFuture<>();
            executorService.execute(() -> prune(initStreamSetObjectIdsSupplier).whenComplete((v, ex) -> {
                if (ex != null) {
                    cf.completeExceptionally(ex);
                } else {
                    cf.complete(null);
                }
            }));
            return cf;
        }
        return CompletableFuture.completedFuture(null);
    }
Search for the object with the maximum start offset less than or equal to the given start offset.
If not found, return -1.
s3stream/src/main/java/com/automq/stream/s3/index/LocalStreamRangeIndexCache.java