Fix IllegalArgumentException if no replication sources are configured If no replication sources are configured IllegalArgumentException was thrown: java.lang.IllegalArgumentException at java.base/java.util.concurrent.ForkJoinPool.<init>(ForkJoinPool.java:2295) at java.base/java.util.concurrent.ForkJoinPool.<init>(ForkJoinPool.java:2165) at com.googlesource.gerrit.plugins.replication.pull.ReplicationQueue.fire(ReplicationQueue.java:214) at com.googlesource.gerrit.plugins.replication.pull.ReplicationQueue.fire(ReplicationQueue.java:194) at com.googlesource.gerrit.plugins.replication.pull.ReplicationQueue.onGitReferenceUpdated(ReplicationQueue.java:159) ... Change-Id: I57c36e306362f8a532bd49602fe4bba520731cc4
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java index 380ac8e..f5bb513 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java
@@ -211,12 +211,18 @@ } ForkJoinPool fetchCallsPool = null; try { - fetchCallsPool = new ForkJoinPool(sources.get().getAll().size()); + List<Source> allSources = sources.get().getAll(); + int numSources = allSources.size(); + if (numSources == 0) { + repLog.debug("No replication sources configured -> skipping fetch"); + return; + } + fetchCallsPool = new ForkJoinPool(numSources); final Consumer<Source> callFunction = callFunction(project, objectId, refName, isDelete, state); fetchCallsPool - .submit(() -> sources.get().getAll().parallelStream().forEach(callFunction)) + .submit(() -> allSources.parallelStream().forEach(callFunction)) .get(fetchCallsTimeout, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { stateLog.error(