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 "";
}