)]}'
{
  "commit": "2712ee84918c32db8db42598f73041c11e81fbfd",
  "tree": "0be8f127823b5ae0d091a997ef7ab722d872a31e",
  "parents": [
    "0cf45bb3ad3ceea0f94d0309842862a80589005d"
  ],
  "author": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Mon Aug 01 18:51:03 2022 -0600"
  },
  "committer": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Wed Sep 07 15:52:11 2022 -0600"
  },
  "message": "Use shallow clone while expanding definitions\n\nWhen walking ancestors, a lot more node refreshing is done. Refreshing\nnodes often involves expanding the task definitions which involves\ncopying the original definition. Reduce the time spent doing these\ncopies drastically by using a shallow clone instead of the previous deep\ncopy. This has been safe to do for some time because of the COW policy\nwhich is being used during expansion and preloading. Additionally,\naccidental overwrites have also been safeguarded against for some time\nnow by using unmodifiable collections in the definitions, and this\nchange adds two additional redudant safeguards. To be consistent and to\nprevent future issues with NamesFactories, use a shallow clone for them\nalso.\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 about 1/3 faster:\n\nBefore this change: 24m13s 24m36s 22m48s 23m36s 24m22s\nAfter this change:  15m14s 15m46s 17m37s 15m24s 15m11s\n\nChange-Id: I2f78b42c1fa68f2751ac04e26f6ec4d5989db585\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2c0ccadf0fe15fd535528350f396d29b80f72660",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/Copier.java",
      "new_id": "10f40484cd8c560fcfbdc000d29f60ae839e9c77",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/Copier.java"
    },
    {
      "type": "modify",
      "old_id": "efafd577a450525507f8c4a4196b561a2709843d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/CopyOnWrite.java",
      "new_id": "8369d67afc0d7f9f04ab3f3fa01825c93d04ff35",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/CopyOnWrite.java"
    },
    {
      "type": "modify",
      "old_id": "4a04e2ed4f1a7542471b41d2cdb9a1ed88778d38",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/Properties.java",
      "new_id": "952b9a39dcefa5ab10aa9c166fbba30e858064cf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/Properties.java"
    },
    {
      "type": "modify",
      "old_id": "9236db7f96b1cc21089e61fe85abf296e3f5f8a7",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskConfig.java",
      "new_id": "b4e79e0d7bdbac87dd9144bdcdc11f351212b65c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskConfig.java"
    }
  ]
}
