Merge branch 'stable-3.8' into stable-3.9

* stable-3.8:
  Use index on ChangeNotes which supports local and imported changes
  Consume global-refdb from source
  Add global-refdb libModule to high-available Docker test
  Remove syslog-sidecar volume in Docker test
  Bump Gerrit to v3.7.7 in Docker tests
  Fix docker-based tests
  Remove `@NoHttpd` from IT tests that interact with Gerrit Rest API

Change-Id: Ib7ee50c8519b7fd91ad8ab87fcff0117b1a73c77
diff --git a/BUILD b/BUILD
index 4f10eab..9bb0445 100644
--- a/BUILD
+++ b/BUILD
@@ -23,10 +23,16 @@
       "@jgroups//jar",
       "@jgroups-kubernetes//jar",
       "@failsafe//jar",
-      "@global-refdb//jar:neverlink",
+      ":global-refdb-neverlink",
     ],
 )
 
+java_library(
+    name = "global-refdb-neverlink",
+    neverlink = 1,
+    exports = ["//plugins/global-refdb"],
+)
+
 junit_tests(
     name = "high-availability_tests",
     srcs = glob(["src/test/java/**/*.java"]),
diff --git a/Jenkinsfile b/Jenkinsfile
index 0c516ca..98183a5 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,2 +1,3 @@
 pluginPipeline(formatCheckId: 'gerritforge:plugins-high-availability-code-style',
-               buildCheckId: 'gerritforge:plugins-high-availability-build-test')
+               buildCheckId: 'gerritforge:plugins-high-availability-build-test',
+               extraModules: ['global-refdb'])
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandler.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandler.java
index c232af2..ac102ff 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandler.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandler.java
@@ -113,7 +113,7 @@
 
   private void reindex(ChangeNotes notes) {
     notes.reload();
-    indexer.index(notes.getChange());
+    indexer.index(notes);
   }
 
   @Override
diff --git a/src/test/docker/docker-compose.yaml b/src/test/docker/docker-compose.yaml
index 59bec58..f744d2e 100644
--- a/src/test/docker/docker-compose.yaml
+++ b/src/test/docker/docker-compose.yaml
@@ -92,7 +92,6 @@
         - subnet: 192.168.1.0/24
 
 volumes:
-  syslog-sidecar:
   shareddir:
   nfs-server-volume:
   git-volume:
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
index fa70958..be74231 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
@@ -37,7 +37,6 @@
 import dev.failsafe.FailsafeExecutor;
 import java.io.IOException;
 import java.time.Duration;
-import java.time.Instant;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import org.junit.Before;
@@ -74,8 +73,6 @@
   @Before
   public void setUp() throws Exception {
     id = Change.id(TEST_CHANGE_NUMBER);
-    Change change = new Change(null, id, null, null, Instant.now());
-    when(changeNotes.getChange()).thenReturn(change);
     when(configMock.index().threadPoolSize()).thenReturn(4);
     when(configMock.index().maxTries()).thenReturn(3);
     when(configMock.index().retryInterval()).thenReturn(Duration.ofMillis(10));
@@ -90,14 +87,14 @@
   public void changeIsIndexedWhenUpToDate() throws Exception {
     setupChangeAccessRelatedMocks(CHANGE_EXISTS, CHANGE_UP_TO_DATE);
     handler.index(TEST_CHANGE_ID, Operation.INDEX, Optional.empty()).get(10, SECONDS);
-    verify(indexerMock, times(1)).index(any(Change.class));
+    verify(indexerMock, times(1)).index(any(ChangeNotes.class));
   }
 
   @Test
   public void changeIsStillIndexedEvenWhenOutdated() throws Exception {
     setupChangeAccessRelatedMocks(CHANGE_EXISTS, CHANGE_OUTDATED);
     handler.index(TEST_CHANGE_ID, Operation.INDEX, Optional.of(new IndexEvent())).get(10, SECONDS);
-    verify(indexerMock, atLeast(1)).index(any(Change.class));
+    verify(indexerMock, atLeast(1)).index(any(ChangeNotes.class));
   }
 
   @Test
@@ -125,13 +122,13 @@
                   return null;
                 })
         .when(indexerMock)
-        .index(any(Change.class));
+        .index(any(ChangeNotes.class));
 
     assertThat(Context.isForwardedEvent()).isFalse();
     handler.index(TEST_CHANGE_ID, Operation.INDEX, Optional.empty()).get(10, SECONDS);
     assertThat(Context.isForwardedEvent()).isFalse();
 
-    verify(indexerMock, times(1)).index(any(Change.class));
+    verify(indexerMock, times(1)).index(any(ChangeNotes.class));
   }
 
   @Test
@@ -144,7 +141,7 @@
                   throw new IOException("someMessage");
                 })
         .when(indexerMock)
-        .index(any(Change.class));
+        .index(any(ChangeNotes.class));
 
     assertThat(Context.isForwardedEvent()).isFalse();
     ExecutionException thrown =
@@ -155,7 +152,7 @@
     assertThat(thrown.getCause()).hasMessageThat().isEqualTo("someMessage");
     assertThat(Context.isForwardedEvent()).isFalse();
 
-    verify(indexerMock, times(1)).index(any(Change.class));
+    verify(indexerMock, times(1)).index(any(ChangeNotes.class));
   }
 
   private void setupChangeAccessRelatedMocks(boolean changeExists, boolean changeIsUpToDate)