)]}'
{
  "commit": "76bf53b5ab1b08c18ac91e45eb2d669aa4a783ea",
  "tree": "fb688819d9bc9a2f115c8d57c11eea1e8be3e405",
  "parents": [
    "ee128f0835b109f074e8627fa883548c89c3482c"
  ],
  "author": {
    "name": "Martin Fick",
    "email": "mfick@codeaurora.org",
    "time": "Thu Nov 18 22:24:19 2021 -0700"
  },
  "committer": {
    "name": "Martin Fick",
    "email": "mfick@codeaurora.org",
    "time": "Wed Jan 12 18:51:58 2022 +0000"
  },
  "message": "Use a COW approach for tasks modified for Properties\n\nPreviously a task was modified directly during property expansion. This\nmade it unsafe to cache tasks output by the preloader and also made it\nimpossible to update a Node for changes after the first one. Fix this by\ncopying a task before expanding its properties. Only copy tasks which\nactually have properties to be expanded in order to avoid the\nperformance hit on every task as the copying itself is expensive. Using\na COW approach is much safer and also enables many more optimizations\nbased on detecting whether a task was altered while eventually\nrefreshing nodes for each change in a query.\n\nThe performance impact of this change seems to be at the noise level.\n\nChange-Id: Idf101dab7990683749c39d82251ece67f127eb9c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ae403646df2f7155c362248abbdaa90991456b1d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/Properties.java",
      "new_id": "b6d86e10e8f8274dc68ba0e4342cd44506edc0b2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/Properties.java"
    },
    {
      "type": "modify",
      "old_id": "97fefb7561409777c7a32025cb13c9488696c6cd",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskConfig.java",
      "new_id": "58cb37d737096f492490d0aa84d235898046e9a6",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskConfig.java"
    },
    {
      "type": "modify",
      "old_id": "16126afeda81d8e0855fe7fc3801e166d817c253",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java",
      "new_id": "702babb5ba5848e7daa78b25006185880839cf3e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java"
    }
  ]
}
