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(