)]}'
{
  "commit": "f5fa77bc4c6794793eacf1aed63b2febaa47a8f0",
  "tree": "52d45c460b509c487873801a87d44b6370669ad0",
  "parents": [
    "f4f174587af7d9ec302b96eaf7f61e7edc52d837"
  ],
  "author": {
    "name": "Youssef Elghareeb",
    "email": "ghareeb@google.com",
    "time": "Mon Oct 02 12:43:34 2023 +0200"
  },
  "committer": {
    "name": "Youssef Elghareeb",
    "email": "ghareeb@google.com",
    "time": "Mon Oct 02 14:28:08 2023 +0200"
  },
  "message": "Add an option to the query changes API to allow skipping faulty records\n\nGerrit uses a secondary index to serve requests for the dashboard.\nCurrently if the server fails to parse at least one record from the\nindex (for example because of a field containing an invalid value) the\nentire request would fail. This leaves the dashboard unusable.\n\nIn this change, we add a new option named \u0027allow-incomplete-results\u0027 to\nthe \u0027Query Changes\u0027 API. If this option is set, the index can tolerate\nhandling the parsing of faulty records and create a canonical ChangeData\nmarked as failed to get parsed from the index. In ChangeJson, we handle\nthis case by creating a canonical empty entity where we only set the\n{project, branch, change_id, number, owner} fields and set the subject\nto \"***ERROR***\".\n\nIt is up to the specific index implementation to handle this option.\nThis is not yet handled in Lucene or Elastic Search.\n\nRelease-Notes: skip\nGoogle-Bug-Id: b/234334827\nChange-Id: I0eacf0576e929dd38535c33888382aa18190ebb3\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "25db39819bef37f5597a6a3e1351fc61969d10e4",
      "old_mode": 33188,
      "old_path": "Documentation/rest-api-changes.txt",
      "new_id": "ea956806a64c12a5f84bb92c5d65e8f79076fbad",
      "new_mode": 33188,
      "new_path": "Documentation/rest-api-changes.txt"
    },
    {
      "type": "modify",
      "old_id": "d8741f5c28d37608a8a4b4769eaab35b3c4cda8a",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/extensions/api/changes/Changes.java",
      "new_id": "ec392d8de43c6221bc24f49a4508bb2de3700448",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/extensions/api/changes/Changes.java"
    },
    {
      "type": "modify",
      "old_id": "ba1c8bd9b78a39ec91f9f1b88ad4c360db7bf938",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/index/BUILD",
      "new_id": "8b48fc00a1f17010fca2fb75e971645ad9156175",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/index/BUILD"
    },
    {
      "type": "modify",
      "old_id": "29ab6d0119cf03a9af77e0fb758d15483d256ad9",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/index/QueryOptions.java",
      "new_id": "bee8fa1c68cd19b85f791edd5385f6ef299cae05",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/index/QueryOptions.java"
    },
    {
      "type": "modify",
      "old_id": "5dfcef3f67ca0c4d2942158e035c50a13ee1313c",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/index/query/QueryProcessor.java",
      "new_id": "d847a06281bcd3967990a215696dcd3e7b76e8c4",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/index/query/QueryProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "6b107f15e78fbaa133940478937113cb42978ca9",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/api/changes/ChangesImpl.java",
      "new_id": "16668204abef22476ceebc9ef931a9987d1bf91a",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/api/changes/ChangesImpl.java"
    },
    {
      "type": "modify",
      "old_id": "81f4a17fe5bc7c603c3fc7f490184a18b47db7b2",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/change/ChangeJson.java",
      "new_id": "d83962f5661029f0777b307c14c554716dfcae1a",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/change/ChangeJson.java"
    },
    {
      "type": "modify",
      "old_id": "c5fa45aeb9155e2dd72f4a31683223c56dec1b5f",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/index/change/IndexedChangeQuery.java",
      "new_id": "00642a911b13e7a7af65ce7993cc35c6620b9148",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/index/change/IndexedChangeQuery.java"
    },
    {
      "type": "modify",
      "old_id": "392d00a54c5ac9e2c2417c21134abf69124cced3",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/query/change/ChangeData.java",
      "new_id": "ab9d69001c3f52bedeab45f870ac78723565e406",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/query/change/ChangeData.java"
    },
    {
      "type": "modify",
      "old_id": "30972242465bcd6a9715dc538a4b5ea1f1a73b9d",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java",
      "new_id": "2979170cecb14e079939fcecc876300b06bfcd74",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "6ce4b39c69be37367036c1d98b8b6f452f8d5506",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/restapi/change/QueryChanges.java",
      "new_id": "4d279b0f8d0ab59667667502d68c11694ec55d96",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/restapi/change/QueryChanges.java"
    }
  ]
}
