Add missing Singleton to ActiveWokersCheck and DeadlockCheck
The ActiveWorkersCheck was triggering the creation
of a new check for every incoming REST-API call, causing
potential deadlocks because of the creation of the
DropWizard's MetricMaker.
As a consequence, the Gerrit instance could have ran
out of incoming HTTP threads.
See as example stack trace:
HTTP GET /config/server/healthcheck~status
java.lang.Thread.State: BLOCKED (on object monitor)
at com.google.gerrit.metrics.dropwizard.DropWizardMetricMaker.newCounter(DropWizardMetricMaker.java:142)
- waiting to lock <0x00007f828e8b80b0> (a com.google.gerrit.metrics.dropwizard.DropWizardMetricMaker)
at com.google.gerrit.server.plugins.PluginMetricMaker.newCounter(PluginMetricMaker.java:55)
at com.googlesource.gerrit.plugins.healthcheck.HealthCheckMetrics.getFailureCounterMetric(HealthCheckMetrics.java:33)
at com.googlesource.gerrit.plugins.healthcheck.check.AbstractHealthCheck.<init>(AbstractHealthCheck.java:54)
at com.googlesource.gerrit.plugins.healthcheck.check.ActiveWorkersCheck.<init>(ActiveWorkersCheck.java:46)
Change-Id: I947b46b58e1d44840b3a44f740627e55dc3194aa
(cherry picked from commit 1c93439e98cc4efb3a44880278a9cbbe5628d36b)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/ActiveWorkersCheck.java b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/ActiveWorkersCheck.java
index 84b8e9a..8770a62 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/ActiveWorkersCheck.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/ActiveWorkersCheck.java
@@ -21,9 +21,11 @@
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.ThreadSettingsConfig;
import com.google.inject.Inject;
+import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.healthcheck.HealthCheckConfig;
import org.eclipse.jgit.lib.Config;
+@Singleton
public class ActiveWorkersCheck extends AbstractWorkersHealthCheck {
public static final String ACTIVE_WORKERS_METRIC_NAME =
diff --git a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/DeadlockCheck.java b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/DeadlockCheck.java
index db5e83a..47ad976 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/DeadlockCheck.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/DeadlockCheck.java
@@ -19,9 +19,11 @@
import com.codahale.metrics.MetricRegistry;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.inject.Inject;
+import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.healthcheck.HealthCheckConfig;
import java.util.Optional;
+@Singleton
public class DeadlockCheck extends AbstractHealthCheck {
public static final String DEADLOCKED_THREADS_METRIC_NAME =