)]}'
{
  "commit": "b275949d33be32a7b7ffde33213ceaeadb42f06e",
  "tree": "fa60952fb2de3ad3c92ca451e01786dd2024ddd8",
  "parents": [
    "ef113b38372128e77a0754e9810da3b31c68044a"
  ],
  "author": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Wed Jan 18 12:46:14 2023 -0700"
  },
  "committer": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Wed Apr 05 17:16:27 2023 -0600"
  },
  "message": "Refactor the StopWatch API for easy safe exception handling\n\nThe previous StopWatch API was similar to the google commons API in that\nit used calls to public start() and stop() methods. This approach is\neasy to get wrong if the call to stop() is not placed in a finally{}\nclause. Since the task plugin code base did not call stop() from\nfinally{} clauses, it was succeptible to timers not being stopped, and\nother bugs when execeptions were encountered. Since 3.5 uses more\nRuntimeExceptions than 2.7, its code base is even more vulnerable to\nthis. The --task--applicable timings in 3.5 have been suspicious at\ntimes, showing times much longer than possible. This is believed to be\ndue to accumulated overlapping StopWatch timings due to some of them not\nbeing stopped when RuntimeExceptions are encountered with INVALID tasks.\n\nRedesign the StopWatch as an AutoCloseable and provide easy APIs to use\nit safely in a try-with-resource, or with SAMs, and adapt the callers to\nuse the new APIs.\n\nChange-Id: Ie3073c9f3d69435b67b12678f8c0f255339c76cc\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "453c118f4ae0ac44687c0bd6c7a72bb78e12c8d9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/HitHashMap.java",
      "new_id": "7a23fc608e90d671be7e68f3e395733aa8ca18e2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/HitHashMap.java"
    },
    {
      "type": "modify",
      "old_id": "53e2ac8ea91b08abc6d4181c4c88d5df37ecd659",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/PredicateCache.java",
      "new_id": "39c99b4b2c0a6da4da8984ab7b567964e62c7531",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/PredicateCache.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39679fff0a43b1e714ad2930f01a742bac159bbf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/SamTryWrapper.java"
    },
    {
      "type": "modify",
      "old_id": "f7d36e758689e5c5621f3b2056d228624449b8b5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/StopWatch.java",
      "new_id": "11fe5883ee98436cad0bc6926e423ae57c771d17",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/StopWatch.java"
    },
    {
      "type": "modify",
      "old_id": "172208ac6e19fb597d91c3bf0b5795d6967f0b49",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java",
      "new_id": "26f726036e0876fd8e75b1a36505fe3bf6f54656",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java"
    },
    {
      "type": "modify",
      "old_id": "7d94438365060a47bf55fa21cc99bc81422349d9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/properties/CopyOnWrite.java",
      "new_id": "947dbf4b17f5c42f8dccedacefbd1d267dbd4853",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/properties/CopyOnWrite.java"
    },
    {
      "type": "modify",
      "old_id": "dc7bc187344074560d33e473030421abac1c549c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/properties/Matcher.java",
      "new_id": "932f984c9b2bf69dd5da1c68dbc917dd61c8de8f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/properties/Matcher.java"
    },
    {
      "type": "modify",
      "old_id": "5fc6c126c81ecbabaff3b771af6e85fc0b781df6",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/properties/Properties.java",
      "new_id": "cb2d46e0834f91a171b72e2d3aa9dcd3180c5c92",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/properties/Properties.java"
    }
  ]
}
