)]}'
{
  "commit": "8ec377ec72e74c069c11409b98ab319b02a676fa",
  "tree": "7c6dba53aeff3cf0a5cc1d39651b24438271ba5a",
  "parents": [
    "d89b965a1ceb59f5f676b0215c6aa1bcd9440342"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Fri Dec 08 17:40:21 2023 +0000"
  },
  "committer": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Fri Dec 08 19:22:30 2023 +0000"
  },
  "message": "Fail apply-object on change /meta when missing patch-set\n\nThe execution of apply-object of changes /meta ref has no\nguarantee to be executed after the successful replication of\nthe associated patch-set.\n\nUpdating the repository with the change /meta pointing to\na missing patch-set, albeit legal from a repo\u0027s perspective,\nit would cause errors in Gerrit at multiple levels:\n- the change screen would not render and produce 500s\n- the reindex may fail\n- the comments may succeed on repo but fail to be reindexed\n\nIt is way better to fail the apply-object and let the\nreplication to fallback to async fetch rather than putting\nthe change in an inconsistent state.\n\nReturn an HTTP status 412 (PRECONDITION FAILED) with the\npatch-set ref that was a precondition for the apply-object\nof the /meta ref to be executed.\n\nChange-Id: I607cc62af96dc2aae3972673ebd94f4a7fee603d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "72f026612b6c681537a5c783e68408eb08f38c4e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectAction.java",
      "new_id": "381e560f1caa573d6315d94a732e9375fc009ef5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectAction.java"
    },
    {
      "type": "modify",
      "old_id": "968a03c9cb98b67b2351510aacb77c478e95435b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommand.java",
      "new_id": "5fef17d28abe96b8af647c1cee5bd536349251fc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommand.java"
    },
    {
      "type": "modify",
      "old_id": "817ea00342173a5d17ae95404d333a101dfa7713",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectsAction.java",
      "new_id": "c4c4e83282ad196eff15eddd5a8e95ff87490e46",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectsAction.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "458c74a04ea01bd76452dfdffdce3d4d072ad011",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/exception/MissingLatestPatchSetException.java"
    },
    {
      "type": "modify",
      "old_id": "36356e94b407fedc0ad3cc78db4e67e96df42987",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObject.java",
      "new_id": "6bb1373c5eb8a63ad53ac863db5d5c620c64ad15",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObject.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a5fec55cedd361dfad76791ed2aa9a0a8aca0501",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ChangeMetaCommitValidator.java"
    },
    {
      "type": "modify",
      "old_id": "a46846ee2308d644308d545a0c3a2b66ead740e0",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java",
      "new_id": "2d94a96efeccf747344999fa4b40f14daa4a956d",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java"
    },
    {
      "type": "modify",
      "old_id": "652daed2d6f073246a327c315762353bd9395b88",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionIT.java",
      "new_id": "edbb85f849f6fc93702c29c7e5d735e62dc19304",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionIT.java"
    },
    {
      "type": "modify",
      "old_id": "c75d32a6eab80c8666eceab15a1168f4366f54ae",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObjectIT.java",
      "new_id": "b56293355d4fa2d5059c2e67295f01d4998dae5e",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObjectIT.java"
    }
  ]
}
