Merge branch 'stable-2.14' into stable-2.15
* stable-2.14:
Setup: Replace 'multiply' with 'repeat' in init step
Setup: Add jgroups skipInterface configuration step
Setup: Add jgroups protocolStack configuration step
Configuration: Remove unnecessary usage of 'this'
Setup: Remove duplication of default auto reindex value
Setup: Add healthCheck configuration init step
Setup: Add synchronize event configuration init step
Setup: Add synchronize configuration step to forwarding sections
Setup: Call proper method for null subsection cases
Setup: Remove unused subsection method parameter
Setup: Add cache pattern configuration init step
Change-Id: Ibac3c328748f374e7d8435728ee3e31df663ee4a
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 0ad64e5..e813bb6 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Configuration.java
@@ -182,10 +182,12 @@
}
public static class AutoReindex {
+
static final String AUTO_REINDEX_SECTION = "autoReindex";
static final String ENABLED = "enabled";
static final String DELAY = "delay";
static final String POLL_INTERVAL = "pollInterval";
+ static final boolean DEFAULT_AUTO_REINDEX = false;
static final long DEFAULT_DELAY = 10L;
static final long DEFAULT_POLL_INTERVAL = 0L;
@@ -194,11 +196,11 @@
private final long pollSec;
public AutoReindex(Config cfg) {
- this.enabled = cfg.getBoolean(AUTO_REINDEX_SECTION, ENABLED, false);
- this.delaySec =
+ enabled = cfg.getBoolean(AUTO_REINDEX_SECTION, ENABLED, DEFAULT_AUTO_REINDEX);
+ delaySec =
ConfigUtil.getTimeUnit(
cfg, AUTO_REINDEX_SECTION, null, DELAY, DEFAULT_DELAY, TimeUnit.SECONDS);
- this.pollSec =
+ pollSec =
ConfigUtil.getTimeUnit(
cfg,
AUTO_REINDEX_SECTION,
@@ -458,7 +460,7 @@
private Websession(Config cfg) {
super(cfg, WEBSESSION_SECTION);
- this.cleanupInterval =
+ cleanupInterval =
ConfigUtil.getTimeUnit(
Strings.nullToEmpty(cfg.getString(WEBSESSION_SECTION, null, CLEANUP_INTERVAL_KEY)),
DEFAULT_CLEANUP_INTERVAL_MS,
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Setup.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Setup.java
index 217e644..e58f62f 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Setup.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Setup.java
@@ -15,13 +15,21 @@
package com.ericsson.gerrit.plugins.highavailability;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.AUTO_REINDEX_SECTION;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.DEFAULT_AUTO_REINDEX;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.DEFAULT_DELAY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.DEFAULT_POLL_INTERVAL;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.DELAY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.ENABLED;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.POLL_INTERVAL;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Cache.CACHE_SECTION;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.Cache.PATTERN_KEY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_THREAD_POOL_SIZE;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.Event.EVENT_SECTION;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.Forwarding.DEFAULT_SYNCHRONIZE;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.Forwarding.SYNCHRONIZE_KEY;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.HealthCheck.DEFAULT_HEALTH_CHECK_ENABLED;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.HealthCheck.ENABLE_KEY;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.HealthCheck.HEALTH_CHECK_SECTION;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Http.CONNECTION_TIMEOUT_KEY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Http.DEFAULT_MAX_TRIES;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Http.DEFAULT_RETRY_INTERVAL;
@@ -35,6 +43,8 @@
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Index.INDEX_SECTION;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.JGroups.CLUSTER_NAME_KEY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.JGroups.DEFAULT_CLUSTER_NAME;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.JGroups.PROTOCOL_STACK_KEY;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.JGroups.SKIP_INTERFACE_KEY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Main.DEFAULT_SHARED_DIRECTORY;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Main.MAIN_SECTION;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Main.SHARED_DIRECTORY_KEY;
@@ -103,8 +113,10 @@
configureAutoReindexSection();
configureHttpSection();
configureCacheSection();
+ configureEventSection();
configureIndexSection();
configureWebsessionsSection();
+ configureHealthCheckSection();
if (!createHAReplicaSite(config)) {
configureMainSection();
configurePeerInfoSection();
@@ -117,19 +129,17 @@
private void configureAutoReindexSection() {
ui.header("AutoReindex section");
Boolean autoReindex =
- promptAndSetBoolean("Auto reindex", AUTO_REINDEX_SECTION, null, ENABLED, false);
+ promptAndSetBoolean("Auto reindex", AUTO_REINDEX_SECTION, ENABLED, DEFAULT_AUTO_REINDEX);
config.setBoolean(AUTO_REINDEX_SECTION, null, ENABLED, autoReindex);
String delay =
- promptAndSetString(
- "Delay", AUTO_REINDEX_SECTION, null, DELAY, numberToString(DEFAULT_DELAY));
+ promptAndSetString("Delay", AUTO_REINDEX_SECTION, DELAY, numberToString(DEFAULT_DELAY));
config.setLong(AUTO_REINDEX_SECTION, null, DELAY, Long.valueOf(delay));
String pollInterval =
promptAndSetString(
"Poll interval",
AUTO_REINDEX_SECTION,
- null,
POLL_INTERVAL,
numberToString(DEFAULT_POLL_INTERVAL));
config.setLong(AUTO_REINDEX_SECTION, null, POLL_INTERVAL, Long.valueOf(pollInterval));
@@ -162,6 +172,18 @@
JGROUPS_SUBSECTION,
CLUSTER_NAME_KEY,
DEFAULT_CLUSTER_NAME);
+ promptAndSetString(
+ "Protocol stack (optional)",
+ PEER_INFO_SECTION,
+ JGROUPS_SUBSECTION,
+ PROTOCOL_STACK_KEY,
+ null);
+ promptAndSetString(
+ titleForOptionalWithNote("Skip interface", "interfaces"),
+ PEER_INFO_SECTION,
+ JGROUPS_SUBSECTION,
+ SKIP_INTERFACE_KEY,
+ null);
}
}
@@ -193,15 +215,24 @@
private void configureCacheSection() {
ui.header("Cache section");
+ promptAndSetSynchronize("Cache", CACHE_SECTION);
promptAndSetString(
"Cache thread pool size",
CACHE_SECTION,
THREAD_POOL_SIZE_KEY,
numberToString(DEFAULT_THREAD_POOL_SIZE));
+ promptAndSetString(
+ titleForOptionalWithNote("Cache pattern", "patterns"), CACHE_SECTION, PATTERN_KEY, null);
+ }
+
+ private void configureEventSection() {
+ ui.header("Event section");
+ promptAndSetSynchronize("Event", EVENT_SECTION);
}
private void configureIndexSection() {
ui.header("Index section");
+ promptAndSetSynchronize("Index", INDEX_SECTION);
promptAndSetString(
"Index thread pool size",
INDEX_SECTION,
@@ -211,16 +242,31 @@
private void configureWebsessionsSection() {
ui.header("Websession section");
+ promptAndSetSynchronize("Websession", WEBSESSION_SECTION);
promptAndSetString(
"Cleanup interval", WEBSESSION_SECTION, CLEANUP_INTERVAL_KEY, DEFAULT_CLEANUP_INTERVAL);
}
+ private void configureHealthCheckSection() {
+ ui.header("HealthCheck section");
+ Boolean healthCheck =
+ promptAndSetBoolean(
+ "Health check", HEALTH_CHECK_SECTION, ENABLE_KEY, DEFAULT_HEALTH_CHECK_ENABLED);
+ config.setBoolean(HEALTH_CHECK_SECTION, null, ENABLE_KEY, healthCheck);
+ }
+
+ private void promptAndSetSynchronize(String sectionTitle, String section) {
+ String titleSuffix = ": synchronize?";
+ String title = sectionTitle + titleSuffix;
+ promptAndSetBoolean(title, section, SYNCHRONIZE_KEY, DEFAULT_SYNCHRONIZE);
+ }
+
private Boolean promptAndSetBoolean(
- String title, String section, String subsection, String name, Boolean defaultValue) {
- Boolean oldValue = config.getBoolean(section, subsection, name, defaultValue);
+ String title, String section, String name, Boolean defaultValue) {
+ Boolean oldValue = config.getBoolean(section, null, name, defaultValue);
Boolean newValue = Boolean.parseBoolean(ui.readString(String.valueOf(oldValue), title));
if (!Objects.equals(oldValue, newValue)) {
- config.setBoolean(section, subsection, name, newValue);
+ config.setBoolean(section, null, name, newValue);
}
return newValue;
}
@@ -244,6 +290,10 @@
return newValue;
}
+ private static String titleForOptionalWithNote(String prefix, String suffix) {
+ return prefix + " (optional); manually repeat this line to configure more " + suffix;
+ }
+
private static String numberToString(int number) {
return Integer.toString(number);
}