)]}'
{
  "commit": "16d688ea53fa9a1c4edcc1fa87931552d41c1903",
  "tree": "0fb54dffed6f956ae621f5a505f8132b20df6e0f",
  "parents": [
    "fd700764a05ebb1bfb19fe2038d96a3478365c8c"
  ],
  "author": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Tue Jul 26 21:20:46 2022 -0600"
  },
  "committer": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Wed Sep 07 15:40:30 2022 -0600"
  },
  "message": "Cache Task definition lists for ChangeNodes\n\nChangeNodes do not benefit from caching their subNode lists even when\nthey are not going to need to be reloaded because ChangeNodes themselves\naren\u0027t cached or reused due to their name change. However if the\nsubNodes don\u0027t need to be reloaded, the subtask lists will be the same\nfor other ChangeNodes created by the same TasksFactory. In this case,\ncache the Task definitions Lists by TasksFactory and reuse them instead\nof node lists. ChangeNodes can still benefit from not repeating the\nrelated work that was done to create the definitions: expanding tasks,\nfetching definitions, creating definitions from factories...\n\nA walking ancestors use case benefits tremendously from this reuse since\na top level wlaking task, and thus all the ChangeNodes do not need their\nsubtasks reloaded, and there are over 1K of these subnodes, and\npotentially around 100K ChangeNodes when walking ancestors!\n\nThe performance difference in the case of a task.config which walks all\ndependencies for a change when run with status:open --no-limit\n--task--applicable is very significant, around 2.5 times faster:\n\nBefore this change: 23m4s, 24m48s, 26m38s, 24m18s, 25m2s\nAfter this change: 9m29s, 9m25s, 9m28s, 9m33s, 11m11s\n\nChange-Id: I2ef200e629627a76936d78a6aec8fe460cd46501\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e246af8b77ccd7d550b9756896cf2a3937176389",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java",
      "new_id": "8992a91dc90b9eb48879445dba7a4c4fa2ae9a59",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java"
    }
  ]
}
