)]}' { "commit": "0d91ffd189297f511c93d40a864978b5774805c1", "tree": "150d53254d13c382418ee96e7a849a3449847b03", "parents": [ "505f2c63c41100d215e706c7df6932854d213bd7" ], "author": { "name": "Luca Milanesio", "email": "luca.milanesio@gmail.com", "time": "Mon Dec 09 22:03:12 2019 +0000" }, "committer": { "name": "Luca Milanesio", "email": "luca.milanesio@gmail.com", "time": "Mon Dec 09 23:21:14 2019 +0000" }, "message": "Synchronize access to ReplicationTasksStorage\n\nThe ReplicationTasksStorage can be subject to concurrency issues when a\nreplication task is moved across directories (waiting/running/building)\nconcurrently with the listing.\n\nThe result of the uncontrolled concurrency could be lead to:\n\n1. Flaky tests because of the replication tasks found two or more times\n in different directories\n2. Flaky tests because of the failure to list replication tasks\n that are escaping across directories because of the rename\n3. File-based exceptions when replication tasks are moved concurrently\n by two threads to different directories.\n\nThe replication tasks storage is supposed to contain only small files and only\nin-flight operations: the overhead of the additional synchronisation is thus\nnegligible compared to the overall latency of the replication itself.\n\nTo eliminate all residual latency, cleanup all the replication tasks\non all subdirectories at the start of the tests.\n\nBug: Issue 11843\nChange-Id: I5f6293b3f22f0943df79f8ab2cb2c217210e5236\n", "tree_diff": [ { "type": "modify", "old_id": "5564925ad2ea88e6dca152fc910933c858c22154", "old_mode": 33188, "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java", "new_id": "8130051a9c23cdf4cc1a49ad2b564d1d79da4c63", "new_mode": 33188, "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java" }, { "type": "modify", "old_id": "41f93b383d5089c3db695c543be059267e5440cb", "old_mode": 33188, "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java", "new_id": "9cf54891b63cb678c9f7f29131a482cb4b1d2425", "new_mode": 33188, "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java" } ] }