This is an automated email from the ASF dual-hosted git repository.

daim pushed a commit to branch OAK-11919
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 89ed7e3e3bae341e7f94224749adfd8d89abcc79
Author: rishabhdaim <[email protected]>
AuthorDate: Thu Nov 27 13:59:54 2025 +0530

    OAK-11919 : removed usage of Guava's ListenableFutureTask from prod files
---
 .../plugins/blob/MarkSweepGarbageCollector.java    | 14 ++++++++----
 .../index/elastic/ElasticIndexStatistics.java      | 26 ++++++++++++++++------
 2 files changed, 29 insertions(+), 11 deletions(-)

diff --git 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
index 1f95901dc0..7015baab07 100644
--- 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
+++ 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
@@ -47,6 +47,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.Callable;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
@@ -57,7 +59,6 @@ import java.util.stream.Collectors;
 import org.apache.commons.collections4.ListValuedMap;
 import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
 import org.apache.commons.io.IOUtils;
-import org.apache.jackrabbit.guava.common.util.concurrent.ListenableFutureTask;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.LineIterator;
 import org.apache.jackrabbit.core.data.DataRecord;
@@ -730,9 +731,14 @@ public class MarkSweepGarbageCollector implements 
BlobGarbageCollector {
 
             if (!markOnly) {
                 // Find all blobs available in the blob store
-                ListenableFutureTask<Integer> blobIdRetriever = 
ListenableFutureTask.create(new BlobIdRetriever(fs,
-                        true));
-                executor.execute(blobIdRetriever);
+                CompletableFuture<Integer> blobIdRetriever = 
CompletableFuture.supplyAsync(() -> {
+                    try {
+                        return new BlobIdRetriever(fs, true).call();
+                    } catch (Exception e) {
+                        throw new CompletionException(e);
+                    }
+                }, executor);
+
 
                 try {
                     blobIdRetriever.get();
diff --git 
a/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexStatistics.java
 
b/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexStatistics.java
index 8cd016f0f2..f963eb504b 100644
--- 
a/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexStatistics.java
+++ 
b/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexStatistics.java
@@ -20,6 +20,8 @@ import java.io.IOException;
 import java.time.Clock;
 import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -29,6 +31,7 @@ import 
co.elastic.clients.elasticsearch._types.query_dsl.Query;
 
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.jackrabbit.guava.common.base.Ticker;
+import org.apache.jackrabbit.oak.commons.internal.concurrent.FutureConverter;
 import org.apache.jackrabbit.oak.plugins.index.elastic.util.ElasticIndexUtils;
 import org.apache.jackrabbit.oak.plugins.index.search.IndexStatistics;
 import org.jetbrains.annotations.NotNull;
@@ -39,7 +42,6 @@ import org.apache.jackrabbit.guava.common.cache.CacheBuilder;
 import org.apache.jackrabbit.guava.common.cache.CacheLoader;
 import org.apache.jackrabbit.guava.common.cache.LoadingCache;
 import org.apache.jackrabbit.guava.common.util.concurrent.ListenableFuture;
-import org.apache.jackrabbit.guava.common.util.concurrent.ListenableFutureTask;
 
 import co.elastic.clients.elasticsearch._types.Bytes;
 import co.elastic.clients.elasticsearch.cat.indices.IndicesRecord;
@@ -219,9 +221,14 @@ public class ElasticIndexStatistics implements 
IndexStatistics {
 
         @Override
         public @NotNull ListenableFuture<Integer> reload(@NotNull 
StatsRequestDescriptor crd, @NotNull Integer oldValue) {
-            ListenableFutureTask<Integer> task = 
ListenableFutureTask.create(() -> count(crd));
-            REFRESH_EXECUTOR.execute(task);
-            return task;
+            CompletableFuture<Integer> task = CompletableFuture.supplyAsync(() 
-> {
+                try {
+                    return count(crd);
+                } catch (IOException e) {
+                    throw new CompletionException(e);
+                }
+            }, REFRESH_EXECUTOR);
+            return FutureConverter.toListenableFuture(task);
         }
 
         private int count(StatsRequestDescriptor crd) throws IOException {
@@ -247,9 +254,14 @@ public class ElasticIndexStatistics implements 
IndexStatistics {
 
         @Override
         public @NotNull ListenableFuture<StatsResponse> reload(@NotNull 
StatsRequestDescriptor crd, @NotNull StatsResponse oldValue) {
-            ListenableFutureTask<StatsResponse> task = 
ListenableFutureTask.create(() -> stats(crd));
-            REFRESH_EXECUTOR.execute(task);
-            return task;
+            CompletableFuture<StatsResponse> task = 
CompletableFuture.supplyAsync(() -> {
+                try {
+                    return stats(crd);
+                } catch (IOException e) {
+                    throw new CompletionException(e);
+                }
+            }, REFRESH_EXECUTOR);
+            return FutureConverter.toListenableFuture(task);
         }
 
         private StatsResponse stats(StatsRequestDescriptor crd) throws 
IOException {

Reply via email to