)]}'
{
  "commit": "eb4a7eb6a3db126f9f1c1cb7b4dfa3dc7aa33a7b",
  "tree": "a0be7e127af7bf2ba568e25e16ae020652fa91fb",
  "parents": [
    "4e65a3cc306184820b9a6ba0e4bf116484471fad"
  ],
  "author": {
    "name": "Adithya Chakilam",
    "email": "achakilam@nvidia.com",
    "time": "Mon Jul 13 15:55:06 2026 -0500"
  },
  "committer": {
    "name": "Adithya Chakilam",
    "email": "achakilam@nvidia.com",
    "time": "Thu Jul 30 01:00:48 2026 -0500"
  },
  "message": "index: recover from crashes between NoteDb write and index write\n\nGerrit\u0027s BatchUpdate writes changes to NoteDb (git) and then to the\nsearch index as two separate, non-atomic steps. If the process is\nkilled between those two steps, the change is durably committed to git\nbut the index is stale, with no automatic recovery. Introduce a WAL\nprotocol to close this gap.\n\nRelease-Notes: Recovery of missed change index updates after a crash/user interrupt can now be enabled via `index.staleChangeRecovery`\nChange-Id: Id1248cc9ef4d8a81cf10650c8bd1e7d563bd6a8f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "42edd90f29d8715b53ed5aaa6f6255bbb3f08c6d",
      "old_mode": 33188,
      "old_path": "Documentation/config-gerrit.txt",
      "new_id": "9b54be0442dc9dd5c1084e8186516243331f6fea",
      "new_mode": 33188,
      "new_path": "Documentation/config-gerrit.txt"
    },
    {
      "type": "modify",
      "old_id": "6b7e87ba1e8b4a53d7e333f4f469055b77feae48",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/index/IndexModule.java",
      "new_id": "7b22f3a50d9a32124c3206b6a586f849ea10a89d",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/index/IndexModule.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d63ff51fa526e5247b509e42ab2cd251e2c2e2f",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/index/change/PendingIndexUpdate.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0a1cd9b353d5dde4f2841ddc13440b88b8220c32",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/index/change/PendingIndexUpdateScanner.java"
    },
    {
      "type": "modify",
      "old_id": "76bf5ef938657773c87116ce119e61c7b8f9c3a1",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/update/BatchUpdate.java",
      "new_id": "5e60aa9e846c2235ee0bf7a50a9c3baa6f0f3b43",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/update/BatchUpdate.java"
    },
    {
      "type": "modify",
      "old_id": "aa727f12c6681d03ec9a962a56e7ffff8c9e2c39",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/update/BatchUpdates.java",
      "new_id": "a4060bc668c009aecda162d27526bf8426a27164",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/update/BatchUpdates.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "78a5cd9c3d7daaff178912c3f9a24bcf25b1732a",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/server/index/change/PendingIndexUpdateIT.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4a23d46481297623d61a6f337062847570681e22",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/server/index/change/PendingIndexUpdateScannerTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2cbff2be479dc7255d6b0001817dc138209503c3",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/server/update/BatchUpdateIndexIntentTest.java"
    }
  ]
}
