)]}'
{
  "commit": "610e882a264e4882c3ea2871d982679c640c7416",
  "tree": "c96c1d21c5216bab291145c449911d5239cc5d16",
  "parents": [
    "507f11a3901cb0fc2d41ab28c909b39df8a5e04c"
  ],
  "author": {
    "name": "Milutin Kristofic",
    "email": "milutin@google.com",
    "time": "Thu Jun 18 13:20:27 2026 +0000"
  },
  "committer": {
    "name": "Milutin Kristofic",
    "email": "milutin@google.com",
    "time": "Thu Jun 18 21:24:54 2026 +0200"
  },
  "message": "Optimize sticky approval check for large changes\n\nWhen evaluating sticky approvals, CodeOwnerApprovalCheck was performing a sequential scan over all changed files of previously approved patch sets for every file in the current patch set. This resulted in O(N*M) complexity.\n\nFor changes with a large number of files (e.g., 100k+), this caused extreme latency and timeouts.\n\nOptimize this by caching the touched paths of previous patch sets in a Set for O(1) lookup, reducing the complexity to O(N+M).\n\nRelease-Notes: skip\nChange-Id: I142d288606c8b5f63fe55caef64a80418bdde6c5\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "511a90cfc5400230be5e0695c7b5bef55bf8425a",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/backend/ChangedFilesByPatchSetCache.java",
      "new_id": "362946e280ee4afa0f6ca9369362ab02b12f3426",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/backend/ChangedFilesByPatchSetCache.java"
    },
    {
      "type": "modify",
      "old_id": "c7d0cb5d6d37a1a79c0ee16c4f310aaa6d400426",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerApprovalCheck.java",
      "new_id": "473d27962c941ed1cc74babdefaa2f3937171cde",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerApprovalCheck.java"
    }
  ]
}
