Merge branch 'stable-3.10' into stable-3.11 * stable-3.10: Do not notify failures on collisions Fixed erroneous increment of the rescheduled metric Ensure failures are only incremented in RunnableWithMetrics Change-Id: I60714422558caf9d332fce3f19b8fea66c6c2e9a
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 4b3749d..b194f2c 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
@@ -635,21 +635,22 @@ .flatMap(filter -> Optional.ofNullable(filter.get())); } - private Set<FetchRefSpec> runRefsFilter(Set<FetchRefSpec> refs, boolean lock) { + private Set<FetchRefSpec> runRefsFilter(Set<FetchRefSpec> refs, boolean lock) + throws com.google.gerrit.git.LockFailureException { Set<String> refsNames = refs.stream().map(FetchRefSpec::refName).collect(Collectors.toUnmodifiableSet()); - Set<String> filteredRefNames = - replicationFetchFilter() - .map( - f -> { - if (lock) { - fetchLocks = f.filterAndLock(this.projectName.get(), refsNames); - return fetchLocks.keySet(); - } else { - return f.filter(this.projectName.get(), refsNames); - } - }) - .orElse(refsNames); + Optional<ReplicationFetchFilter> maybeFilter = replicationFetchFilter(); + Set<String> filteredRefNames; + if (maybeFilter.isPresent()) { + if (lock) { + fetchLocks = maybeFilter.get().filterAndLock(this.projectName.get(), refsNames); + filteredRefNames = fetchLocks.keySet(); + } else { + filteredRefNames = maybeFilter.get().filter(this.projectName.get(), refsNames); + } + } else { + filteredRefNames = refsNames; + } return refs.stream() .filter(refSpec -> filteredRefNames.contains(refSpec.refName())) .collect(Collectors.toUnmodifiableSet());
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 251f39f..a01a6d8 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/ReplicationFetchFilter.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationFetchFilter.java index 17afe94..19d4a5b 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationFetchFilter.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationFetchFilter.java
@@ -15,6 +15,7 @@ package com.googlesource.gerrit.plugins.replication.pull; import com.google.gerrit.extensions.annotations.ExtensionPoint; +import com.google.gerrit.git.LockFailureException; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -29,7 +30,8 @@ Set<String> filter(String projectName, Set<String> fetchRefs); - default Map<String, AutoCloseable> filterAndLock(String projectName, Set<String> fetchRefs) { + default Map<String, AutoCloseable> filterAndLock(String projectName, Set<String> fetchRefs) + throws LockFailureException { return filter(projectName, fetchRefs).stream() .collect(Collectors.toMap(ref -> ref, ref -> () -> {})); }
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 ""; }