Allow to disable health check endpoint
Administrators of sites that implement health check in a different way
may want to disable it in this plugin.
Change-Id: I9417d605678216b17d8a5cf84c12e34424e2aef1
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
index e1b37ab..32e49af 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
@@ -84,6 +84,11 @@
// common parameters to cache, event index and websession sections
static final String SYNCHRONIZE_KEY = "synchronize";
+ // health check section
+ static final String HEALTH_CHECK_SECTION = "healthCheck";
+ static final String ENABLE_KEY = "enable";
+ static final boolean DEFAULT_HEALTH_CHECK_ENABLED = true;
+
// websession section
static final String WEBSESSION_SECTION = "websession";
static final String CLEANUP_INTERVAL_KEY = "cleanupInterval";
@@ -110,6 +115,7 @@
private final Websession websession;
private PeerInfoStatic peerInfoStatic;
private PeerInfoJGroups peerInfoJGroups;
+ private HealthCheck healthCheck;
public enum PeerInfoStrategy {
JGROUPS,
@@ -138,6 +144,7 @@
event = new Event(cfg);
index = new Index(cfg);
websession = new Websession(cfg);
+ healthCheck = new HealthCheck(cfg);
}
public Main main() {
@@ -180,6 +187,10 @@
return websession;
}
+ public HealthCheck healthCheck() {
+ return healthCheck;
+ }
+
private static int getInt(Config cfg, String section, String name, int defaultValue) {
try {
return cfg.getInt(section, name, defaultValue);
@@ -403,4 +414,16 @@
return cleanupInterval;
}
}
+
+ public static class HealthCheck {
+ private final boolean enabled;
+
+ private HealthCheck(Config cfg) {
+ enabled = cfg.getBoolean(HEALTH_CHECK_SECTION, ENABLE_KEY, DEFAULT_HEALTH_CHECK_ENABLED);
+ }
+
+ public boolean enabled() {
+ return enabled;
+ }
+ }
}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java
index 204a206..3209b1b 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java
@@ -31,7 +31,9 @@
@Override
protected void configureServlets() {
install(new RestForwarderServletModule());
- install(new HealthServletModule());
+ if (config.healthCheck().enabled()) {
+ install(new HealthServletModule());
+ }
if (config.websession().synchronize()) {
install(new FileBasedWebsessionModule());
}
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 42ce673..2289c83 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -30,6 +30,8 @@
[http]
: user = username
: password = password
+[healthcheck]
+: enable = true
main.sharedDirectory
: Path to a directory accessible from both master instances.
@@ -152,3 +154,6 @@
* y, year, years (`1 year` is treated as `365 days`)
If a time unit suffix is not specified, `hours` is assumed.
Defaults to 24 hours.
+
+healthcheck.enable
+: Whether to enable the health check endpoint. Defaults to 'true'.
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/ConfigurationTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/ConfigurationTest.java
index e9b39c7..42102c7 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/ConfigurationTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/ConfigurationTest.java
@@ -20,6 +20,7 @@
import static com.ericsson.gerrit.plugins.highavailability.Configuration.CONNECTION_TIMEOUT_KEY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_CLEANUP_INTERVAL_MS;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_CLUSTER_NAME;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_HEALTH_CHECK_ENABLED;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_MAX_TRIES;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_PEER_INFO_STRATEGY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_RETRY_INTERVAL;
@@ -27,7 +28,9 @@
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_SYNCHRONIZE;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_THREAD_POOL_SIZE;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_TIMEOUT_MS;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.ENABLE_KEY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.EVENT_SECTION;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.HEALTH_CHECK_SECTION;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.HTTP_SECTION;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.INDEX_SECTION;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.JGROUPS_SECTION;
@@ -533,4 +536,12 @@
assertThat(matcher.matches(cache)).isFalse();
}
}
+
+ @Test
+ public void testHealthCheckEnabled() throws Exception {
+ when(configMock.getBoolean(HEALTH_CHECK_SECTION, ENABLE_KEY, DEFAULT_HEALTH_CHECK_ENABLED))
+ .thenReturn(false);
+ initializeConfiguration();
+ assertThat(configuration.healthCheck().enabled()).isFalse();
+ }
}