)]}'
{
  "commit": "1522caecce4b02649ee00f802e23cc5b2401a6e9",
  "tree": "55f5b0b5e52714930f71957b7d09f21dcd68675d",
  "parents": [
    "2024bc96182566bceff1328abc3f9d81052cfcab"
  ],
  "author": {
    "name": "Antonio Barone",
    "email": "syntonyze@gmail.com",
    "time": "Thu Apr 18 16:36:53 2019 +0300"
  },
  "committer": {
    "name": "Antonio Barone",
    "email": "syntonyze@gmail.com",
    "time": "Tue May 28 14:52:27 2019 +0100"
  },
  "message": "Improve the performance of branch extraction\n\nImprove the performance of contributors endpoint by using\nan in-memory/on-disk cache to avoid computing file diff for the same\nobjectIds over and over again but for different branches.\n\nRemove also the use of parallel collection because of\ngreatly diminishing the throughput caused by increasing the overhead\nin memory management.\n\nThe performance improvement is higher for larget repositories with\na lot of branches.\n\nExamples:\n\n- Extracting analytics, including branches, since 2000-01-01 from the\nGerrit Code Review repo, which at the time of writing has a size of 130Mb\nand has only 15 branches might save up to 10 seconds. Arguably not that\nmuch.\n\n- Extracting analytics, including branches, since 2017-01-01 from the\nplatform/prebuilts/tools repo (part of AOSP), which at the time of\nwriting has a size of 22Gb and 215 branchea, might help latency to go\ndown from 7minutes to 20 seconds (20 times faster).\n\nExtracting from this very same repo since 2000-01-01, allows to get a\nresponse in a matter of minutes rather several hours.\n\nBug: Issue 10729\nChange-Id: I991a5fc82d7c32c6e035da8b90ba4bebeab50188\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f0f47451a7359085a60b2dbb64780085dec78ef6",
      "old_mode": 33188,
      "old_path": "build.sbt",
      "new_id": "74cfc91c439765ab091963b269b6d7d8e6d66af2",
      "new_mode": 33188,
      "new_path": "build.sbt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4d617ae92d6b415737dc16c03333efa0c109b812",
      "new_mode": 33188,
      "new_path": "config.md"
    },
    {
      "type": "modify",
      "old_id": "932e04c15b9f30bcb46f7adf20cf98e5a6e7a93d",
      "old_mode": 33188,
      "old_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/Contributors.scala",
      "new_id": "8e048e22932b23deeff8cb136b6221464ca009d2",
      "new_mode": 33188,
      "new_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/Contributors.scala"
    },
    {
      "type": "modify",
      "old_id": "ca8167b7e5f08f67e2f6468fd24ca1e14edcdc35",
      "old_mode": 33188,
      "old_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/Module.scala",
      "new_id": "b0c643e63d519ed1dfdb597eb3d42e57dba07454",
      "new_mode": 33188,
      "new_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/Module.scala"
    },
    {
      "type": "modify",
      "old_id": "ac6764728711a7daa3bf7bd2eb6019351a949497",
      "old_mode": 33188,
      "old_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractor.scala",
      "new_id": "a3efffc8ef32b0bb4ecb70d20afd1688bfa4999a",
      "new_mode": 33188,
      "new_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractor.scala"
    },
    {
      "type": "modify",
      "old_id": "ae1509cd59e928b5614f555271ebc018dd677fdf",
      "old_mode": 33188,
      "old_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/common/CommitsStatistics.scala",
      "new_id": "685fc5919dd4265efab8cc9fab0fceac6795aa8e",
      "new_mode": 33188,
      "new_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/common/CommitsStatistics.scala"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8d573f01859b2c6cc7e065fa608ebe375106e637",
      "new_mode": 33188,
      "new_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/common/CommitsStatisticsCache.scala"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9b2e3581f6fdac4e6d5eef4b9ad707c6ff329bc7",
      "new_mode": 33188,
      "new_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/common/CommitsStatisticsCacheModule.scala"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "30a2a76d2e08c1fe56b945a398ef4967c022d805",
      "new_mode": 33188,
      "new_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/common/CommitsStatisticsCacheSerializer.scala"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "36a175b9d95e1237344ca196481c03236aa842b4",
      "new_mode": 33188,
      "new_path": "src/main/scala/com/googlesource/gerrit/plugins/analytics/common/CommitsStatisticsLoader.scala"
    },
    {
      "type": "modify",
      "old_id": "d2635770724ec4b83d0fe4a500001a298cb01042",
      "old_mode": 33188,
      "old_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/CommitStatisticsCommentLinkSpec.scala",
      "new_id": "5f1fe84873d5757267307c2f2cc8cf3f6ab8edf1",
      "new_mode": 33188,
      "new_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/CommitStatisticsCommentLinkSpec.scala"
    },
    {
      "type": "modify",
      "old_id": "4b56f7cd545fb9ac36a004e379211c4002f52cb7",
      "old_mode": 33188,
      "old_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/CommitStatisticsSpec.scala",
      "new_id": "b2ae9e7935c9575f571aa6f1544941de9377453c",
      "new_mode": 33188,
      "new_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/CommitStatisticsSpec.scala"
    },
    {
      "type": "modify",
      "old_id": "6e6f457727eb9421190cbbd355b0e2b5091ade5c",
      "old_mode": 33188,
      "old_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/GerritTestDaemon.scala",
      "new_id": "f10c7729923424fb4daebd620c3d97a2b2ed1b02",
      "new_mode": 33188,
      "new_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/GerritTestDaemon.scala"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8834418f4cd00474709209e4b73999a1632e4d87",
      "new_mode": 33188,
      "new_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/TestCommitStatisticsNoCache.scala"
    },
    {
      "type": "modify",
      "old_id": "a783290e07b60f8edb6a9bd0da533aa6fb56bbfb",
      "old_mode": 33188,
      "old_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/UserActivitySummarySpec.scala",
      "new_id": "3ecaa3679e15dd74145ad88d65fdff7cb3c680b1",
      "new_mode": 33188,
      "new_path": "src/test/scala/com/googlesource/gerrit/plugins/analytics/test/UserActivitySummarySpec.scala"
    }
  ]
}
