You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by da...@apache.org on 2025/09/11 10:38:19 UTC

(jackrabbit-oak) 01/01: OAK-11906 : removed usage of ListableFutureTask

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

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

commit cb3ef8e3dd234dd6302f051633471a4748ebce7a
Author: rishabhdaim <ri...@gmail.com>
AuthorDate: Thu Sep 11 16:07:58 2025 +0530

    OAK-11906 : removed usage of ListableFutureTask
---
 .../jackrabbit/oak/jcr/AtomicCounterClusterIT.java | 42 +++++++++-------------
 .../apache/jackrabbit/oak/jcr/AtomicCounterIT.java | 37 +++++++++----------
 2 files changed, 33 insertions(+), 46 deletions(-)

diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java
index c9db2ece61..7a63ab0011 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java
@@ -31,6 +31,7 @@ import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.Callable;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Delayed;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.RunnableScheduledFuture;
@@ -49,7 +50,6 @@ import org.apache.jackrabbit.oak.commons.FixturesHelper;
 import org.apache.jackrabbit.oak.commons.FixturesHelper.Fixture;
 import org.apache.jackrabbit.oak.commons.PerfLogger;
 import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
-import org.apache.jackrabbit.oak.commons.internal.concurrent.FutureConverter;
 import org.apache.jackrabbit.oak.commons.internal.concurrent.FutureUtils;
 import org.apache.jackrabbit.oak.plugins.atomic.AtomicCounterEditor;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -58,8 +58,6 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.jackrabbit.guava.common.util.concurrent.ListenableFutureTask;
-
 public class AtomicCounterClusterIT  extends DocumentClusterIT {
 
     private static final Set<Fixture> FIXTURES = FixturesHelper.getFixtures();
@@ -144,37 +142,31 @@ public class AtomicCounterClusterIT  extends DocumentClusterIT {
 
         // for each cluster node, `numIncrements` sessions pushing random increments
         long start = LOG_PERF.start("Firing the threads");
-        List<ListenableFutureTask<Void>> tasks = new ArrayList<>();
+        List<CompletableFuture<Void>> tasks = new ArrayList<>();
         for (Repository rep : repos) {
             final Repository r = rep;
             for (int i = 0; i < numIncrements; i++) {
-                ListenableFutureTask<Void> task = ListenableFutureTask.create(new Callable<Void>() {
-
-                        @Override
-                        public Void call() throws Exception {
-                            Session s = r.login(ADMIN);
-                            try {
-                                try {
-                                    Node n = s.getNode(counterPath);
-                                    int increment = rnd.nextInt(10) + 1;
-                                    n.setProperty(PROP_INCREMENT, increment);
-                                    expected.addAndGet(increment);
-                                    s.save();
-                                } finally {
-                                    s.logout();
-                                }                                
-                            } catch (Exception e) {
-                                exceptions.put(Thread.currentThread().getName(), e);
-                            }
-                            return null;
+                CompletableFuture<Void> task = CompletableFuture.runAsync(() -> {
+                    try {
+                        Session s = r.login(ADMIN);
+                        try {
+                            Node n = s.getNode(counterPath);
+                            int increment = rnd.nextInt(10) + 1;
+                            n.setProperty(PROP_INCREMENT, increment);
+                            expected.addAndGet(increment);
+                            s.save();
+                        } finally {
+                            s.logout();
                         }
+                    } catch (Exception e) {
+                        exceptions.put(Thread.currentThread().getName(), e);
+                    }
                 });
-                new Thread(task).start();
                 tasks.add(task);
             }
         }
         LOG_PERF.end(start, -1, "Firing threads completed", "");
-        FutureUtils.allAsList(FutureConverter.toCompletableFuture(tasks)).get();
+        FutureUtils.allAsList(tasks).get();
         LOG_PERF.end(start, -1, "Futures completed", "");
 
         waitForTaskCompletion();
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterIT.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterIT.java
index 9f7f0d98b3..a71d3cdc4d 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterIT.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterIT.java
@@ -27,7 +27,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 import java.util.Set;
-import java.util.concurrent.Callable;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -35,11 +35,9 @@ import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
-import org.apache.jackrabbit.guava.common.util.concurrent.ListenableFutureTask;
 import org.apache.jackrabbit.oak.NodeStoreFixtures;
 import org.apache.jackrabbit.oak.commons.FixturesHelper;
 import org.apache.jackrabbit.oak.commons.FixturesHelper.Fixture;
-import org.apache.jackrabbit.oak.commons.internal.concurrent.FutureConverter;
 import org.apache.jackrabbit.oak.commons.internal.concurrent.FutureUtils;
 import org.apache.jackrabbit.oak.fixture.NodeStoreFixture;
 import org.jetbrains.annotations.NotNull;
@@ -80,11 +78,11 @@ public class AtomicCounterIT extends AbstractRepositoryTest {
             // ensuring initial state
             assertEquals(expected.get(), counter.getProperty(PROP_COUNTER).getLong());
 
-            List<ListenableFutureTask<Void>> tasks = new ArrayList<>();
+            List<CompletableFuture<Void>> tasks = new ArrayList<>();
             for (int t = 0; t < 100; t++) {
                 tasks.add(updateCounter(counterPath, rnd.nextInt(10) + 1, expected));
             }
-            FutureUtils.allAsList(FutureConverter.toCompletableFuture(tasks)).get();
+            FutureUtils.allAsList(tasks).get();
 
             session.refresh(false);
             assertEquals(expected.get(), 
@@ -94,31 +92,28 @@ public class AtomicCounterIT extends AbstractRepositoryTest {
         }
     }
 
-    private ListenableFutureTask<Void> updateCounter(@NotNull final String counterPath,
+    private CompletableFuture<Void> updateCounter(@NotNull final String counterPath,
                                                      final long delta,
                                                      @NotNull final AtomicLong expected) {
         requireNonNull(counterPath);
         requireNonNull(expected);
 
-        ListenableFutureTask<Void> task = ListenableFutureTask.create(new Callable<Void>() {
-
-            @Override
-            public Void call() throws Exception {
-                Session session = createAdminSession();
-                try {
-                    Node c = session.getNode(counterPath);
-                    c.setProperty(PROP_INCREMENT, delta);
-                    expected.addAndGet(delta);
-                    session.save();
-                } finally {
+        return CompletableFuture.runAsync(() -> {
+            Session session = null;
+            try {
+                session = createAdminSession();
+                Node c = session.getNode(counterPath);
+                c.setProperty(PROP_INCREMENT, delta);
+                expected.addAndGet(delta);
+                session.save();
+            } catch (RepositoryException e) {
+                throw new RuntimeException(e);
+            } finally {
+                if (session != null) {
                     session.logout();
                 }
-                return null;
             }
         });
-
-        new Thread(task).start();
-        return task;
     }
 
     @Override