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