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