Merge branch 'stable-3.1'
* stable-3.1:
Fix issue with task cleanup after retry
Change-Id: I49ff116e5eeef335c35479d1da6ab492e80d11cf
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java b/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
index ccf8f0e..eff06ce 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
@@ -219,6 +219,10 @@
return maxRetries == 0 || retryCount <= maxRetries;
}
+ private void retryDone() {
+ this.retrying = false;
+ }
+
void canceledByReplication() {
canceled = true;
}
@@ -357,6 +361,7 @@
metrics.recordSlowProjectReplication(
config.getName(), projectName.get(), pool.getSlowLatencyThreshold(), elapsed);
}
+ retryDone();
repLog.atInfo().log(
"Replication to %s completed in %dms, %dms delay, %d retries",
uri, elapsed, delay, retryCount);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
index 19948db..545ae4b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
@@ -352,6 +352,20 @@
}
}
+ @Test
+ public void shouldCleanupTasksAfterNewProjectReplication() throws Exception {
+ tasksStorage.disableDeleteForTesting(false);
+ setReplicationDestination("task_cleanup_project", "replica", ALL_PROJECTS);
+ config.setInt("remote", "task_cleanup_project", "replicationRetry", 0);
+ config.save();
+ reloadConfig();
+ assertThat(tasksStorage.listRunning()).hasSize(0);
+ Project.NameKey sourceProject = createTestProject("task_cleanup_project");
+
+ waitUntil(() -> projectExists(Project.nameKey(sourceProject + "replica.git")));
+ waitUntil(() -> tasksStorage.listRunning().size() == 0);
+ }
+
private Ref getRef(Repository repo, String branchName) throws IOException {
return repo.getRefDatabase().exactRef(branchName);
}