)]}'
{
  "commit": "69c66c8919533635bb7ef36cdd660f48f6647c09",
  "tree": "dfc7de5dfa2228756d2740d186e7dc3d82369829",
  "parents": [
    "69c0c4dd67a942f42cb36ed3f89e4257d7de575e"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Fri Jul 05 22:08:04 2024 +0100"
  },
  "committer": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Tue Jul 09 20:46:09 2024 +0100"
  },
  "message": "Improve FanoutConfigurationResource loading performance\n\nWhen using replication remotes as individual files under\n$GERRIT_SITE/etc/replication the time requested to load the remotes,\nparsing them and merging them together can be very significant,\nespecially when having a lot of remote configurations.\n\nOn GerritHub.io with 12k remotes configured, the time to load,\nparse and merge them in a unique FileBasedConfig object reaches\nseveral minutes.\n\nThe main issue found during profiling is the manual merging of\nConfig through one call per setting using Config.setStringList()\nrather than merging them first and then parsing them as a whole.\n\nRefactor the overall parsing logic by splitting the process in\nthree parts:\n- load of all replication remotes a list of String\n- expanding them as individual strings and adding the remote names\n- merging them together with the base config using the JGit\u0027s\n  default mechanism\n\nFrom an external perspective, the API work exactly as before, including\nthe config validation process; from a performance perspective, the\nloading of 12k remotes is reduced by 20x times, taking under 1 minute.\n\nChange-Id: I2880428b881034e6253d07ab0ba368c0a97eecc0\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5d308a5f97121a694b12d2fe9ae46f15dfea10f1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/FanoutConfigResource.java",
      "new_id": "1ecf242638ce8e515ff2e43292ecefba7d0df760",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/FanoutConfigResource.java"
    }
  ]
}
