Merge branch 'stable-3.0'
* stable-3.0:
Allow to configure the number of hook execution workers
Submit: Handle potentially missing username
Change-Id: Ib92b3db88ad33e56b3f7bfcf1ba8069a318125e4
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java
index 3c376bd..c8f154a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java
@@ -16,22 +16,26 @@
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
+import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.git.WorkQueue;
import com.google.inject.Inject;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
+import org.eclipse.jgit.lib.Config;
class HookQueue implements LifecycleListener {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final WorkQueue workQueue;
+ private final int executorThreads;
private ScheduledExecutorService queue;
@Inject
- HookQueue(WorkQueue workQueue) {
+ HookQueue(WorkQueue workQueue, @GerritServerConfig Config config) {
+ this.executorThreads = config.getInt("hooks", "executorThreads", 1);
this.workQueue = workQueue;
}
@@ -50,7 +54,7 @@
@Override
public void start() {
- queue = workQueue.createQueue(1, "HookQueue");
+ queue = workQueue.createQueue(executorThreads, "HookQueue");
}
@Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/Submit.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/Submit.java
index 0a56dad..f23cfa7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/Submit.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/Submit.java
@@ -51,7 +51,7 @@
args.add("--project", projectName);
args.add("--branch", destBranch.branch());
args.add("--submitter", caller.getNameEmail());
- args.add("--submitter-username", caller.getUserName().get());
+ args.add("--submitter-username", caller.getUserName().orElse(null));
args.add("--patchset", patchSetId.get());
args.add("--commit", commit.getId().name());
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 9303587..2aea566 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -37,6 +37,9 @@
: Timeout value in seconds for synchronous hooks. If not set, defaults
to 30 seconds.
+hooks.executorThreads
+: Number of workers to use for hook execution. If not set, defaults to 1.
+
hooks.changeAbandonedHook
: Filename for the change abandoned hook. If not set, defaults to `change-abandoned`.