Merge branch 'stable-3.11'
* stable-3.11:
Set GERRIT_VERSION to stable-3.11
De-register deleted repositories from the JGit RepositoryCache
Get global-refdb.jar from Gerrit-CI
Update base OS to AlmaLinux 9.3 and Java 17
Add missing syslog-sidecar in docker-compose.yaml
Removing obsolete version attribute in docker-compose.yaml
Bump Gerrit version to 3.10
Change-Id: If55a465229ce71aa79e6b788724eb5e6bfb8f345
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedProjectListUpdateHandler.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedProjectListUpdateHandler.java
index 857d2db..3dee851 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedProjectListUpdateHandler.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedProjectListUpdateHandler.java
@@ -16,10 +16,13 @@
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.entities.Project;
+import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.project.ProjectCache;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.lib.RepositoryCache;
/**
* Update project list cache. This class is meant to be used on the receiving side of the {@link
@@ -31,10 +34,12 @@
private static final FluentLogger log = FluentLogger.forEnclosingClass();
private final ProjectCache projectCache;
+ private final GitRepositoryManager repoMgr;
@Inject
- ForwardedProjectListUpdateHandler(ProjectCache projectCache) {
+ ForwardedProjectListUpdateHandler(ProjectCache projectCache, GitRepositoryManager repoMgr) {
this.projectCache = projectCache;
+ this.repoMgr = repoMgr;
}
/**
@@ -50,6 +55,7 @@
Context.setForwardedEvent(true);
if (remove) {
projectCache.remove(projectKey);
+ removeFromRepositoryCache(projectKey);
log.atFine().log("Removed %s from project list", projectName);
} else {
projectCache.onCreateProject(projectKey);
@@ -59,4 +65,14 @@
Context.unsetForwardedEvent();
}
}
+
+ private void removeFromRepositoryCache(Project.NameKey projectKey) {
+ try (Repository repo = repoMgr.openRepository(projectKey)) {
+ if (repo != null) {
+ RepositoryCache.unregister(repo);
+ }
+ } catch (IOException e) {
+ // The repository does not exist: nothing to do
+ }
+ }
}
diff --git a/src/test/docker/docker-compose.yaml b/src/test/docker/docker-compose.yaml
index 810cbf4..2e7981d 100644
--- a/src/test/docker/docker-compose.yaml
+++ b/src/test/docker/docker-compose.yaml
@@ -1,5 +1,3 @@
-version: '3'
-
services:
nfs-server:
@@ -110,6 +108,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 d8ebd5b..74ba1a2 100644
--- a/src/test/docker/gerrit/Dockerfile
+++ b/src/test/docker/gerrit/Dockerfile
@@ -10,8 +10,7 @@
gettext \
&& yum -y clean all
-ENV GERRIT_BRANCH master
-ENV JAVA_HOME /usr/lib/jvm/jre-17-openjdk
+ENV GERRIT_VERSION stable-3.11
# Add gerrit user
RUN adduser -p -m --uid 1000 gerrit --home-dir /home/gerrit
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedProjectListUpdateHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedProjectListUpdateHandlerTest.java
index 2067265..b4b6e26 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedProjectListUpdateHandlerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedProjectListUpdateHandlerTest.java
@@ -20,6 +20,7 @@
import static org.mockito.Mockito.verify;
import com.google.gerrit.entities.Project;
+import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.project.ProjectCache;
import org.junit.Before;
import org.junit.Test;
@@ -35,11 +36,12 @@
private static final String SOME_MESSAGE = "someMessage";
private static final Project.NameKey PROJECT_KEY = Project.nameKey(PROJECT_NAME);
@Mock private ProjectCache projectCacheMock;
+ @Mock private GitRepositoryManager repoMgrMock;
private ForwardedProjectListUpdateHandler handler;
@Before
public void setUp() throws Exception {
- handler = new ForwardedProjectListUpdateHandler(projectCacheMock);
+ handler = new ForwardedProjectListUpdateHandler(projectCacheMock, repoMgrMock);
}
@Test