)]}'
{
  "commit": "9f16df24c3c5aba042b1f3aeef0b0bb6610d4267",
  "tree": "464cd9c193daab261861d1fb4531ace7ca4ba5c6",
  "parents": [
    "9e649acbf65d01cbbff91d52d952a34f0af81c71"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Thu Feb 20 15:18:14 2025 +0000"
  },
  "committer": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Thu Feb 20 08:38:22 2025 -0800"
  },
  "message": "Prevent the synchronous replication of create-refs via apply-object\n\nAllow to prevent the create-refs replication events from being\nreplicated via apply-object synchronously.\n\nThis helps fixing the inconsistencies created by out-of-order execution\nof multiple create/delete of the same ref multiple times. Replicating\nmultiple non-ff updates such as create/delete refs may lead to\ninconsistencies due to the unpredictable order of their execution on the\nremote endpoints.\n\nBy default all the create-refs are still being replicated via\napply-object, however, should some refs being created and deleted\nmultiple times, it is possible to disable their synchronous replication\nusing the following setting on the replication.config:\n\n[replication]\n  applyObjectBannedCreateRefs \u003d refs/heads/myvolatile/*\n\nThe above configuration will disable the synchronous replication of all\ncreate-refs under refs/heads/myvolatile/*.\n\nBug: Issue 397737226\nChange-Id: I60577748ca127264dde937a9d242aa0338ad758d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "453cbf792aaf0f78200632c773f444c238419524",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java",
      "new_id": "b94189e7936acc80a19a3d19797be626e1fb32bd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d7c685a8c150f6a9d0f85f205bdf20d0f5f854c2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/ApplyObjectBannedCreateRefsFilter.java"
    },
    {
      "type": "modify",
      "old_id": "546df2e6ef94ef36fa2c2b953cf6dda06b4b7e8c",
      "old_mode": 33188,
      "old_path": "src/main/resources/Documentation/config.md",
      "new_id": "da350ad1fe4311ddd09d4ed8c780d2b96d50044d",
      "new_mode": 33188,
      "new_path": "src/main/resources/Documentation/config.md"
    },
    {
      "type": "modify",
      "old_id": "1c8a8ea53cba1355e5e78e54bfe976b83272032e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java",
      "new_id": "7f4ca4e23874b6015b125d1b726003c724c52f3f",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java"
    }
  ]
}
