summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Milanesio <luca.milanesio@gmail.com>2023-07-12 12:26:57 +0100
committerLuca Milanesio <luca.milanesio@gmail.com>2023-07-12 12:26:57 +0100
commit535fe0786e57acdf32bfa7860c5c8a86aec0617e (patch)
treee1afeaf6d71ef7758d4054f5d143dd17e3c98373
parentcc4114a4802c4555c6e7611d6737cc161b8643d4 (diff)
parent77a440890d4c6287f55f93fbe4813e0e687d034f (diff)
Merge branch 'stable-3.5' into stable-3.6
* stable-3.5: Fix GerritServer replica mode when used with @UseLocalDisk Format bazel files using buildifier Format sources using gjf Add jgit-ssh-jsch as licensed under JGit's license Release-Notes: skip Change-Id: I983d643c1fc542a5a14fc9d388016516260d9c4c
-rw-r--r--java/com/google/gerrit/acceptance/GerritServer.java11
-rw-r--r--java/com/google/gerrit/pgm/Daemon.java5
-rw-r--r--java/com/google/gerrit/server/config/GerritIsReplicaProvider.java13
-rw-r--r--javatests/com/google/gerrit/acceptance/server/config/GerritIsReplicaIT.java35
4 files changed, 54 insertions, 10 deletions
diff --git a/java/com/google/gerrit/acceptance/GerritServer.java b/java/com/google/gerrit/acceptance/GerritServer.java
index a149f29b91..998217214c 100644
--- a/java/com/google/gerrit/acceptance/GerritServer.java
+++ b/java/com/google/gerrit/acceptance/GerritServer.java
@@ -450,6 +450,12 @@ public class GerritServer implements AutoCloseable {
bind(TestTicker.class).toInstance(testTicker);
}
});
+ daemon.setEnableHttpd(desc.httpd());
+ // Assure that SSHD is enabled if HTTPD is not required, otherwise the Gerrit server would not
+ // even start.
+ daemon.setEnableSshd(!desc.httpd() || desc.useSsh());
+ daemon.setReplica(
+ ReplicaUtil.isReplica(baseConfig) || ReplicaUtil.isReplica(desc.buildConfig(baseConfig)));
if (desc.memory()) {
checkArgument(additionalArgs.length == 0, "cannot pass args to in-memory server");
@@ -466,7 +472,6 @@ public class GerritServer implements AutoCloseable {
@Nullable InMemoryRepositoryManager inMemoryRepoManager)
throws Exception {
Config cfg = desc.buildConfig(baseConfig);
- daemon.setReplica(ReplicaUtil.isReplica(baseConfig) || ReplicaUtil.isReplica(cfg));
mergeTestConfig(cfg);
// Set the log4j configuration to an invalid one to prevent system logs
// from getting configured and creating log files.
@@ -743,4 +748,8 @@ public class GerritServer implements AutoCloseable {
public String toString() {
return MoreObjects.toStringHelper(this).addValue(desc).toString();
}
+
+ public boolean isReplica() {
+ return daemon.isReplica();
+ }
}
diff --git a/java/com/google/gerrit/pgm/Daemon.java b/java/com/google/gerrit/pgm/Daemon.java
index 75891fe9dc..21c1bbd849 100644
--- a/java/com/google/gerrit/pgm/Daemon.java
+++ b/java/com/google/gerrit/pgm/Daemon.java
@@ -247,6 +247,10 @@ public class Daemon extends SiteProgram {
this.replica = replica;
}
+ public boolean isReplica() {
+ return replica;
+ }
+
@VisibleForTesting
public Injector getHttpdInjector() {
return httpdInjector;
@@ -367,6 +371,7 @@ public class Daemon extends SiteProgram {
}
cfgInjector = createCfgInjector();
config = cfgInjector.getInstance(Key.get(Config.class, GerritServerConfig.class));
+ config.setBoolean("container", null, "replica", replica);
indexType = IndexModule.getIndexType(cfgInjector);
sysInjector = createSysInjector();
sysInjector.getInstance(PluginGuiceEnvironment.class).setDbCfgInjector(dbInjector, cfgInjector);
diff --git a/java/com/google/gerrit/server/config/GerritIsReplicaProvider.java b/java/com/google/gerrit/server/config/GerritIsReplicaProvider.java
index bd07f7df8f..213cd1c95a 100644
--- a/java/com/google/gerrit/server/config/GerritIsReplicaProvider.java
+++ b/java/com/google/gerrit/server/config/GerritIsReplicaProvider.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.config;
+import com.google.gerrit.server.util.ReplicaUtil;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
@@ -26,21 +27,15 @@ import org.eclipse.jgit.lib.Config;
*/
@Singleton
public final class GerritIsReplicaProvider implements Provider<Boolean> {
- public static final String CONFIG_SECTION = "container";
- public static final String REPLICA_KEY = "replica";
- public static final String DEPRECATED_REPLICA_KEY = "slave";
-
- public final boolean isReplica;
+ private final Config config;
@Inject
public GerritIsReplicaProvider(@GerritServerConfig Config config) {
- this.isReplica =
- config.getBoolean(CONFIG_SECTION, REPLICA_KEY, false)
- || config.getBoolean(CONFIG_SECTION, DEPRECATED_REPLICA_KEY, false);
+ this.config = config;
}
@Override
public Boolean get() {
- return isReplica;
+ return ReplicaUtil.isReplica(config);
}
}
diff --git a/javatests/com/google/gerrit/acceptance/server/config/GerritIsReplicaIT.java b/javatests/com/google/gerrit/acceptance/server/config/GerritIsReplicaIT.java
index d01a81dd73..b8ec57b2bc 100644
--- a/javatests/com/google/gerrit/acceptance/server/config/GerritIsReplicaIT.java
+++ b/javatests/com/google/gerrit/acceptance/server/config/GerritIsReplicaIT.java
@@ -18,6 +18,8 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.Sandboxed;
+import com.google.gerrit.acceptance.UseLocalDisk;
+import com.google.gerrit.acceptance.config.GerritConfig;
import com.google.gerrit.server.config.GerritIsReplicaProvider;
import com.google.gerrit.testing.ConfigSuite;
import com.google.inject.Inject;
@@ -35,6 +37,14 @@ public class GerritIsReplicaIT extends AbstractDaemonTest {
@Test
public void isNotReplica() {
assertThat(isReplicaProvider.get()).isFalse();
+ assertThat(server.isReplica()).isFalse();
+ }
+
+ @Test
+ @UseLocalDisk
+ public void isNotReplicaWithLocalDisk() {
+ assertThat(isReplicaProvider.get()).isFalse();
+ assertThat(server.isReplica()).isFalse();
}
@Test
@@ -42,5 +52,30 @@ public class GerritIsReplicaIT extends AbstractDaemonTest {
public void isReplica() throws Exception {
restartAsSlave();
assertThat(isReplicaProvider.get()).isTrue();
+ assertThat(server.isReplica()).isTrue();
+ }
+
+ @Test
+ @GerritConfig(name = "container.replica", value = "true")
+ public void isReplicaFromGerritConfigAnnotation() throws Exception {
+ assertThat(isReplicaProvider.get()).isTrue();
+ assertThat(server.isReplica()).isTrue();
+ }
+
+ @Test
+ @UseLocalDisk
+ @GerritConfig(name = "container.replica", value = "true")
+ public void isReplicaWithLocalDisk() throws Exception {
+ assertThat(isReplicaProvider.get()).isTrue();
+ assertThat(server.isReplica()).isTrue();
+ }
+
+ @Test
+ @Sandboxed
+ @UseLocalDisk
+ public void isReplicaWithLocalDiskAfterRestart() throws Exception {
+ restartAsSlave();
+ assertThat(isReplicaProvider.get()).isTrue();
+ assertThat(server.isReplica()).isTrue();
}
}