Merge branch 'stable-3.9' into stable-3.10
* stable-3.9:
Verify high-availability formatting using GJF 1.7
Check for existence of change's target SHA1 for reindexing
Remove `@NoHttpd` from IT tests that interact with Gerrit Rest API
Change-Id: I3fdf1d89e4fed2f37c0adcf7861b2242d3209d4b
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 6fa743f..a328694 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/HttpModule.java
@@ -17,7 +17,10 @@
import com.ericsson.gerrit.plugins.highavailability.forwarder.rest.RestForwarderServletModule;
import com.ericsson.gerrit.plugins.highavailability.health.HealthServletModule;
import com.ericsson.gerrit.plugins.highavailability.websession.file.FileBasedWebsessionModule;
+import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.gerrit.httpd.AllRequestFilter;
import com.google.inject.Inject;
+import com.google.inject.Scopes;
import com.google.inject.servlet.ServletModule;
class HttpModule extends ServletModule {
@@ -37,5 +40,8 @@
if (config.websession().synchronize()) {
install(new FileBasedWebsessionModule());
}
+ DynamicSet.bind(binder(), AllRequestFilter.class)
+ .to(XGerritInstanceFilter.class)
+ .in(Scopes.SINGLETON);
}
}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/XGerritInstanceFilter.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/XGerritInstanceFilter.java
new file mode 100644
index 0000000..a268231
--- /dev/null
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/XGerritInstanceFilter.java
@@ -0,0 +1,53 @@
+// Copyright (C) 2024 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.ericsson.gerrit.plugins.highavailability;
+
+import static com.google.common.base.MoreObjects.firstNonNull;
+
+import com.google.gerrit.common.Nullable;
+import com.google.gerrit.httpd.AllRequestFilter;
+import com.google.gerrit.server.config.GerritInstanceId;
+import com.google.gerrit.server.config.GerritInstanceName;
+import com.google.inject.Inject;
+import java.io.IOException;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+public class XGerritInstanceFilter extends AllRequestFilter {
+ private static final String X_GERRIT_INSTANCE = "X-Gerrit-Instance";
+
+ private final String instanceId;
+ private final String instanceName;
+
+ @Inject
+ XGerritInstanceFilter(
+ @Nullable @GerritInstanceId String instanceId, @GerritInstanceName String instanceName) {
+ this.instanceId = instanceId;
+ this.instanceName = instanceName;
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
+ if (response instanceof HttpServletResponse) {
+ ((HttpServletResponse) response)
+ .addHeader(X_GERRIT_INSTANCE, firstNonNull(instanceId, instanceName));
+ }
+ chain.doFilter(request, response);
+ }
+}
diff --git a/src/test/docker/docker-compose.yaml b/src/test/docker/docker-compose.yaml
index f744d2e..8524963 100644
--- a/src/test/docker/docker-compose.yaml
+++ b/src/test/docker/docker-compose.yaml
@@ -1,5 +1,3 @@
-version: '3'
-
services:
nfs-server:
@@ -94,6 +92,7 @@
volumes:
shareddir:
nfs-server-volume:
+ syslog-sidecar:
git-volume:
driver: "local"
driver_opts:
diff --git a/src/test/docker/gerrit/Dockerfile b/src/test/docker/gerrit/Dockerfile
index 33a7b5b..e70e0ea 100644
--- a/src/test/docker/gerrit/Dockerfile
+++ b/src/test/docker/gerrit/Dockerfile
@@ -1,17 +1,16 @@
-FROM almalinux:8.5
+FROM almalinux:9.3
# Install dependencies
RUN yum -y install \
git \
- java-11-openjdk \
+ java-17-openjdk \
procps \
sudo \
passwd \
gettext \
&& yum -y clean all
-ENV GERRIT_VERSION=3.6
-ENV JAVA_HOME /usr/lib/jvm/jre-11-openjdk
+ENV GERRIT_VERSION=3.10
# Add gerrit user
RUN adduser -p -m --uid 1000 gerrit --home-dir /home/gerrit
@@ -32,10 +31,9 @@
ADD --chown=gerrit \
"https://gerrit-ci.gerritforge.com/job/plugin-high-availability-bazel-stable-$GERRIT_VERSION/lastSuccessfulBuild/artifact/bazel-bin/plugins/high-availability/high-availability.jar" \
/var/gerrit/plugins/high-availability.jar
-
ADD --chown=gerrit \
- "https://repo1.maven.org/maven2/com/gerritforge/global-refdb/$GERRIT_VERSION.3.4/global-refdb-$GERRIT_VERSION.3.4.jar" \
- /tmp
+ "https://gerrit-ci.gerritforge.com/job/module-global-refdb-bazel-stable-$GERRIT_VERSION/lastSuccessfulBuild/artifact/bazel-bin/plugins/global-refdb/global-refdb.jar" \
+ /var/gerrit/lib/global-refdb.jar
ADD --chown=gerrit:gerrit ./wait-for-it.sh /bin
diff --git a/src/test/docker/gerrit/entrypoint.sh b/src/test/docker/gerrit/entrypoint.sh
index b382a3b..2d4e387 100755
--- a/src/test/docker/gerrit/entrypoint.sh
+++ b/src/test/docker/gerrit/entrypoint.sh
@@ -14,10 +14,6 @@
sudo -u gerrit java -jar /tmp/gerrit.war init -d /var/gerrit --batch --install-all-plugins
chown -R gerrit: /var/gerrit/shareddir
-# required until regression is fixed, see https://groups.google.com/g/repo-discuss/c/DH-ftHMiCyE/m/qF88c6KMAAAJ
-echo "Copying global ref db jar into lib"
-sudo -u gerrit cp /tmp/global-refdb-*.jar /var/gerrit/lib
-
echo "Reindexing Gerrit..."
cd /var/gerrit && sudo -u gerrit java -jar /var/gerrit/bin/gerrit.war reindex -d /var/gerrit
sudo -u gerrit git config -f /var/gerrit/etc/gerrit.config gerrit.canonicalWebUrl http://$HOSTNAME/
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 e158099..b51e1a0 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/ConfigurationTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/ConfigurationTest.java
@@ -59,7 +59,6 @@
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Websession.DEFAULT_CLEANUP_INTERVAL;
import static com.ericsson.gerrit.plugins.highavailability.Configuration.Websession.WEBSESSION_SECTION;
import static com.google.common.truth.Truth.assertThat;
-import static com.google.common.truth.Truth8.assertThat;
import static org.junit.Assert.assertEquals;
import com.ericsson.gerrit.plugins.highavailability.Configuration.PeerInfoStrategy;