Merge branch 'stable-3.10' into stable-3.11 * stable-3.10: Log cancelled fetch collisions without reschedule Add per-project shared lock to avoid fetch collisions Revert "Prevent concurrent fetches on the same repository" Revert "Extract QueueInfo into its own class" Extract QueueInfo into its own class Throw LockFailureException from filterAndLock interface Expose new constructor for LockFailureException Prevent concurrent fetches on the same repository Change-Id: Id1aa990ab3a59f0232418738b084ea20c977d183
diff --git a/example-setup/broker/Dockerfile b/example-setup/broker/Dockerfile index 8419c8e..9c09461 100644 --- a/example-setup/broker/Dockerfile +++ b/example-setup/broker/Dockerfile
@@ -1,4 +1,4 @@ -FROM gerritcodereview/gerrit:3.10.0-almalinux9 +FROM gerritcodereview/gerrit:3.11.4 USER root
diff --git a/example-setup/http/Dockerfile b/example-setup/http/Dockerfile index 4a824a7..18d88ec 100644 --- a/example-setup/http/Dockerfile +++ b/example-setup/http/Dockerfile
@@ -1,4 +1,4 @@ -FROM gerritcodereview/gerrit:3.10.0-almalinux9 +FROM gerritcodereview/gerrit:3.11.4 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 7f69304..a43ce4a 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
@@ -666,14 +666,14 @@ throws LockFailureException { Set<String> refsNames = refs.stream().map(FetchRefSpec::refName).collect(Collectors.toUnmodifiableSet()); + Optional<ReplicationFetchFilter> maybeFilter = replicationFetchFilter(); Set<String> filteredRefNames; - Optional<ReplicationFetchFilter> fetchFilter = replicationFetchFilter(); - if (fetchFilter.isPresent()) { + if (maybeFilter.isPresent()) { if (lock) { - fetchLocks = fetchFilter.get().filterAndLock(this.projectName.get(), refsNames); + fetchLocks = maybeFilter.get().filterAndLock(this.projectName.get(), refsNames); filteredRefNames = fetchLocks.keySet(); } else { - filteredRefNames = fetchFilter.get().filter(this.projectName.get(), refsNames); + filteredRefNames = maybeFilter.get().filter(this.projectName.get(), refsNames); } } else { filteredRefNames = refsNames;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationModule.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationModule.java index 4f32f26..d4eb9b8 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationModule.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationModule.java
@@ -34,6 +34,7 @@ import com.google.inject.assistedinject.FactoryModuleBuilder; import com.google.inject.internal.UniqueAnnotations; import com.google.inject.name.Names; +import com.googlesource.gerrit.plugins.deleteproject.cache.CacheDeleteHandler; import com.googlesource.gerrit.plugins.replication.AutoReloadSecureCredentialsFactoryDecorator; import com.googlesource.gerrit.plugins.replication.ConfigParser; import com.googlesource.gerrit.plugins.replication.CredentialsFactory; @@ -42,6 +43,7 @@ import com.googlesource.gerrit.plugins.replication.StartReplicationCapability; import com.googlesource.gerrit.plugins.replication.pull.api.FetchApiCapability; import com.googlesource.gerrit.plugins.replication.pull.api.FetchJob; +import com.googlesource.gerrit.plugins.replication.pull.api.ProjectDeletionAction; import com.googlesource.gerrit.plugins.replication.pull.auth.PullReplicationGroupModule; import com.googlesource.gerrit.plugins.replication.pull.client.FetchApiClient; import com.googlesource.gerrit.plugins.replication.pull.client.FetchRestApiClient; @@ -68,6 +70,9 @@ @Override protected void configure() { + bind(CacheDeleteHandler.class); + bind(ProjectDeletionAction.class).in(Scopes.SINGLETON); + bind(MetricMaker.class) .annotatedWith(Names.named(ReplicationQueueMetrics.REPLICATION_QUEUE_METRICS)) .toInstance(pluginMetricMaker);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java index efc445d..c3bb378 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java
@@ -70,7 +70,6 @@ public static final boolean FORCE_ASYNC = true; private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - static String GERRIT_ADMIN_PROTOCOL_PREFIX = "gerrit+"; private static final Gson GSON = new GsonBuilder().setFieldNamingPolicy(LOWER_CASE_WITH_UNDERSCORES).create();
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/health/PullReplicationTasksHealthCheckTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/health/PullReplicationTasksHealthCheckTest.java index acba063..d06c9ea 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/health/PullReplicationTasksHealthCheckTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/health/PullReplicationTasksHealthCheckTest.java
@@ -38,6 +38,7 @@ import com.googlesource.gerrit.plugins.replication.api.ConfigResource; import com.googlesource.gerrit.plugins.replication.pull.Source; import com.googlesource.gerrit.plugins.replication.pull.SourcesCollection; +import java.io.IOException; import java.time.Duration; import java.util.ArrayList; import java.util.List; @@ -255,6 +256,9 @@ } @Override + public void update(Config config) throws IOException {} + + @Override public String getVersion() { return ""; }