Merge branch 'stable-2.16' into stable-3.0

* stable-2.16:
  Make persistent task keys stable

Change-Id: Iefda465c739f4669b5394d3c57f7abe0d7513b5f
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
index 19becdf..b1fbb10 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
@@ -69,7 +69,8 @@
 
   public String persist(ReplicateRefUpdate r) {
     String json = GSON.toJson(r) + "\n";
-    String eventKey = sha1(json).name();
+    String key = r.project + "\n" + r.ref + "\n" + r.uri + "\n" + r.remote;
+    String eventKey = sha1(key).name();
     Path file = refUpdates().resolve(eventKey);
 
     if (Files.exists(file)) {
@@ -91,8 +92,8 @@
   }
 
   public void delete(ReplicateRefUpdate r) {
-    String taskJson = GSON.toJson(r) + "\n";
-    String taskKey = sha1(taskJson).name();
+    String key = r.project + "\n" + r.ref + "\n" + r.uri + "\n" + r.remote;
+    String taskKey = sha1(key).name();
     Path file = refUpdates().resolve(taskKey);
 
     if (disableDeleteForTesting) {