Merge branch 'stable-3.10' into stable-3.11

* stable-3.10:
  Enable metrics for the high-availability executors' queues

Change-Id: I62ded644af2c10b6fcefcd1716b2defe742f7868
diff --git a/BUILD b/BUILD
index 3735cb3..52f3c25 100644
--- a/BUILD
+++ b/BUILD
@@ -15,6 +15,7 @@
         "Gerrit-Module: com.ericsson.gerrit.plugins.highavailability.Module",
         "Gerrit-HttpModule: com.ericsson.gerrit.plugins.highavailability.HttpModule",
         "Gerrit-InitStep: com.ericsson.gerrit.plugins.highavailability.Setup",
+        "Gerrit-ReloadMode: restart",
         "Implementation-Title: high-availability plugin",
         "Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/high-availability",
     ],
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/ExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/ExecutorProvider.java
index d48df46..0d25d92 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/ExecutorProvider.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/ExecutorProvider.java
@@ -35,7 +35,7 @@
       WorkQueue workQueue, int threadPoolSize, String threadNamePrefix, long scheduleDelayMsec) {
     executor =
         new ScheduledWithDelayExecutorService(
-            workQueue.createQueue(threadPoolSize, threadNamePrefix), scheduleDelayMsec);
+            workQueue.createQueue(threadPoolSize, threadNamePrefix, true), scheduleDelayMsec);
   }
 
   @Override
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexModule.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexModule.java
index 1db3721..c1b0ef3 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexModule.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexModule.java
@@ -20,13 +20,13 @@
 import com.google.gerrit.extensions.events.GroupIndexedListener;
 import com.google.gerrit.extensions.events.ProjectIndexedListener;
 import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.inject.AbstractModule;
+import com.google.gerrit.lifecycle.LifecycleModule;
 import com.google.inject.Scopes;
 import com.google.inject.TypeLiteral;
 import com.google.inject.assistedinject.FactoryModuleBuilder;
 import dev.failsafe.FailsafeExecutor;
 
-public class IndexModule extends AbstractModule {
+public class IndexModule extends LifecycleModule {
 
   @Override
   protected void configure() {
@@ -38,6 +38,7 @@
         .annotatedWith(ForwardedIndexExecutor.class)
         .to(ForwardedIndexExecutorProvider.class)
         .in(Scopes.SINGLETON);
+    listener().to(ForwardedIndexExecutorProvider.class);
 
     bind(new TypeLiteral<FailsafeExecutor<Boolean>>() {})
         .annotatedWith(ForwardedBatchIndexExecutor.class)
@@ -47,7 +48,7 @@
         .annotatedWith(ForwardedBatchIndexExecutor.class)
         .to(ForwardedBatchIndexExecutorProvider.class)
         .in(Scopes.SINGLETON);
-
+    listener().to(ForwardedBatchIndexExecutorProvider.class);
     DynamicSet.bind(binder(), ChangeIndexedListener.class)
         .to(IndexEventHandler.class)
         .in(Scopes.SINGLETON);