Merge branch 'stable-3.5' into stable-3.6 * stable-3.5: Fix typos in docs Receive stream events from events-broker directly Change-Id: Ic370bfffda8ea15d8875b9dd4d32649d9ccb171b
diff --git a/example-setup/Dockerfile b/example-setup/Dockerfile index 167b9f5..fea2ac9 100644 --- a/example-setup/Dockerfile +++ b/example-setup/Dockerfile
@@ -1,4 +1,4 @@ -FROM gerritcodereview/gerrit:3.5.4-almalinux8 +FROM gerritcodereview/gerrit:3.6.3-almalinux8 USER root
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/FetchOne.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/FetchOne.java index d8da65e..eb543a0 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/FetchOne.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/FetchOne.java
@@ -328,7 +328,6 @@ } catch (NotSupportedException e) { stateLog.error("Cannot replicate from " + uri, e, getStatesAsArray()); } catch (TransportException e) { - Throwable cause = e.getCause(); if (e instanceof LockFailureException) { lockRetryCount++; // The LockFailureException message contains both URI and reason
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java index 380ac8e..f5b27ee 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java
@@ -156,11 +156,7 @@ event.getRefName(), event.getOldObjectId(), event.getNewObjectId()); - fire( - event.getProjectName(), - ObjectId.fromString(event.getNewObjectId()), - event.getRefName(), - event.isDelete()); + fire(ReferenceUpdatedEvent.from(event)); } } @@ -189,34 +185,39 @@ return !refsFilter.match(refName); } - private void fire(String projectName, ObjectId objectId, String refName, boolean isDelete) { + private void fire(ReferenceUpdatedEvent event) { ReplicationState state = new ReplicationState(new GitUpdateProcessing(dispatcher.get())); - fire(Project.nameKey(projectName), objectId, refName, isDelete, state); + fire(event, state); state.markAllFetchTasksScheduled(); } - private void fire( - Project.NameKey project, - ObjectId objectId, - String refName, - boolean isDelete, - ReplicationState state) { + private void fire(ReferenceUpdatedEvent event, ReplicationState state) { if (!running) { stateLog.warn( "Replication plugin did not finish startup before event, event replication is postponed", state); - beforeStartupEventsQueue.add( - ReferenceUpdatedEvent.create(project.get(), refName, objectId, isDelete)); + beforeStartupEventsQueue.add(event); return; } ForkJoinPool fetchCallsPool = null; try { - fetchCallsPool = new ForkJoinPool(sources.get().getAll().size()); + List<Source> allSources = sources.get().getAll(); + int numSources = allSources.size(); + if (numSources == 0) { + repLog.debug("No replication sources configured -> skipping fetch"); + return; + } + fetchCallsPool = new ForkJoinPool(numSources); final Consumer<Source> callFunction = - callFunction(project, objectId, refName, isDelete, state); + callFunction( + Project.nameKey(event.projectName()), + event.objectId(), + event.refName(), + event.isDelete(), + state); fetchCallsPool - .submit(() -> sources.get().getAll().parallelStream().forEach(callFunction)) + .submit(() -> allSources.parallelStream().forEach(callFunction)) .get(fetchCallsTimeout, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { stateLog.error( @@ -491,7 +492,7 @@ String eventKey = String.format("%s:%s", event.projectName(), event.refName()); if (!eventsReplayed.contains(eventKey)) { repLog.info("Firing pending task {}", event); - fire(event.projectName(), event.objectId(), event.refName(), event.isDelete()); + fire(event); eventsReplayed.add(eventKey); } } @@ -517,6 +518,14 @@ projectName, refName, objectId, isDelete); } + static ReferenceUpdatedEvent from(GitReferenceUpdatedListener.Event event) { + return ReferenceUpdatedEvent.create( + event.getProjectName(), + event.getRefName(), + ObjectId.fromString(event.getNewObjectId()), + event.isDelete()); + } + public abstract String projectName(); public abstract String refName();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/DeleteRefCommand.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/DeleteRefCommand.java index d86287a..fd62910 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/DeleteRefCommand.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/DeleteRefCommand.java
@@ -36,7 +36,6 @@ import com.googlesource.gerrit.plugins.replication.pull.ReplicationState; import com.googlesource.gerrit.plugins.replication.pull.Source; import com.googlesource.gerrit.plugins.replication.pull.SourcesCollection; -import com.googlesource.gerrit.plugins.replication.pull.fetch.ApplyObject; import com.googlesource.gerrit.plugins.replication.pull.fetch.RefUpdateState; import java.io.IOException; import java.util.Optional; @@ -49,7 +48,6 @@ private static final FluentLogger logger = FluentLogger.forEnclosingClass(); private final PullReplicationStateLogger fetchStateLog; - private final ApplyObject applyObject; private final DynamicItem<EventDispatcher> eventDispatcher; private final ProjectCache projectCache; private final SourcesCollection sourcesCollection; @@ -61,13 +59,11 @@ PullReplicationStateLogger fetchStateLog, ProjectCache projectCache, SourcesCollection sourcesCollection, - ApplyObject applyObject, PermissionBackend permissionBackend, DynamicItem<EventDispatcher> eventDispatcher, LocalGitRepositoryManagerProvider gitManagerProvider) { this.fetchStateLog = fetchStateLog; this.projectCache = projectCache; - this.applyObject = applyObject; this.eventDispatcher = eventDispatcher; this.sourcesCollection = sourcesCollection; this.permissionBackend = permissionBackend;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/CGitFetchValidator.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/CGitFetchValidator.java index 9a10898..434c0f0 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/CGitFetchValidator.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/CGitFetchValidator.java
@@ -35,7 +35,7 @@ @Override public Void visit(AssistedInjectBinding<? extends FetchFactory> binding) { - TypeLiteral<CGitFetch> nativeGitFetchType = new TypeLiteral<CGitFetch>() {}; + TypeLiteral<CGitFetch> nativeGitFetchType = new TypeLiteral<>() {}; for (AssistedMethod method : binding.getAssistedMethods()) { if (method.getImplementationType().equals(nativeGitFetchType)) { String[] command = new String[] {"git", "--version"};
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/FetchGitUpdateProcessingTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/FetchGitUpdateProcessingTest.java index 68044b4..5a26054 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/FetchGitUpdateProcessingTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/FetchGitUpdateProcessingTest.java
@@ -47,8 +47,7 @@ } @Test - public void headRefReplicatedInGitUpdateProcessing() - throws URISyntaxException, PermissionBackendException { + public void headRefReplicatedInGitUpdateProcessing() throws PermissionBackendException { FetchRefReplicatedEvent expectedEvent = new FetchRefReplicatedEvent( "someProject",
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationIT.java index f3c62c5..86b22b2 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationIT.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationIT.java
@@ -336,7 +336,6 @@ BranchInput input = new BranchInput(); input.revision = master; gApi.projects().name(testProjectName).branch(newBranch).create(input); - String branchRevision = gApi.projects().name(testProjectName).branch(newBranch).get().revision; ReplicationQueue pullReplicationQueue = plugin.getSysInjector().getInstance(ReplicationQueue.class);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java index 0743cb9..927aec2 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java
@@ -45,7 +45,6 @@ import com.googlesource.gerrit.plugins.replication.ReplicationConfig; import com.googlesource.gerrit.plugins.replication.ReplicationFileBasedConfig; import com.googlesource.gerrit.plugins.replication.pull.api.data.RevisionData; -import com.googlesource.gerrit.plugins.replication.pull.api.exception.RefUpdateException; import com.googlesource.gerrit.plugins.replication.pull.client.FetchApiClient; import com.googlesource.gerrit.plugins.replication.pull.client.FetchRestApiClient; import com.googlesource.gerrit.plugins.replication.pull.client.HttpResult; @@ -206,7 +205,7 @@ @Test public void shouldFallbackToCallFetchWhenIOException() - throws ClientProtocolException, IOException, LargeObjectException, RefUpdateException { + throws ClientProtocolException, IOException, LargeObjectException { Event event = new TestEvent("refs/changes/01/1/meta"); objectUnderTest.start(); @@ -219,7 +218,7 @@ @Test public void shouldFallbackToCallFetchWhenLargeRef() - throws ClientProtocolException, IOException, LargeObjectException, RefUpdateException { + throws ClientProtocolException, IOException, LargeObjectException { Event event = new TestEvent("refs/changes/01/1/1"); objectUnderTest.start(); @@ -307,7 +306,7 @@ } @Test - public void shouldCallDeleteWhenReplicateProjectDeletionsTrue() throws IOException { + public void shouldCallDeleteWhenReplicateProjectDeletionsTrue() { when(source.wouldDeleteProject(any())).thenReturn(true); String projectName = "testProject"; @@ -323,7 +322,7 @@ } @Test - public void shouldNotCallDeleteWhenProjectNotToDelete() throws IOException { + public void shouldNotCallDeleteWhenProjectNotToDelete() { when(source.wouldDeleteProject(any())).thenReturn(false); FakeProjectDeletedEvent event = new FakeProjectDeletedEvent("testProject"); @@ -335,7 +334,7 @@ } @Test - public void shouldScheduleUpdateHeadWhenWouldFetchProject() throws IOException { + public void shouldScheduleUpdateHeadWhenWouldFetchProject() { when(source.wouldFetchProject(any())).thenReturn(true); String projectName = "aProject"; @@ -351,7 +350,7 @@ } @Test - public void shouldNotScheduleUpdateHeadWhenNotWouldFetchProject() throws IOException { + public void shouldNotScheduleUpdateHeadWhenNotWouldFetchProject() { when(source.wouldFetchProject(any())).thenReturn(false); String projectName = "aProject";
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java index 20c1fea..e638653 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java
@@ -163,7 +163,7 @@ } public ResponseHandler<Object> assertHttpResponseCode(int responseCode) { - return new ResponseHandler<Object>() { + return new ResponseHandler<>() { @Override public Object handleResponse(HttpResponse response)
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommandTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommandTest.java index 9b5ef46..4c188df 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommandTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommandTest.java
@@ -64,7 +64,6 @@ private String sampleCommitObjectId = "9f8d52853089a3cf00c02ff7bd0817bd4353a95a"; private String sampleTreeObjectId = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"; - private String sampleBlobObjectId = "b5d7bcf1d1c5b0f0726d10a16c8315f06f900bfb"; @Mock private PullReplicationStateLogger fetchStateLog; @Mock private ApplyObject applyObject;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/DeleteRefCommandTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/DeleteRefCommandTest.java index 2adf72f..efa931f 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/DeleteRefCommandTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/DeleteRefCommandTest.java
@@ -102,7 +102,6 @@ fetchStateLog, projectCache, sourceCollection, - applyObject, permissionBackend, eventDispatcherDataItem, new LocalGitRepositoryManagerProvider(gitManager));