)]}'
{
  "commit": "05e6221587f26c87282769820e9d9088e2ff1301",
  "tree": "1f3b22d04ba062a900eb10db39f8ac180b510fad",
  "parents": [
    "f3a6e8ac083306ffec4f6be8ce32b3903b506814"
  ],
  "author": {
    "name": "Guillaume Nodet",
    "email": "gnodet@gmail.com",
    "time": "Mon Aug 03 02:36:22 2026 +0200"
  },
  "committer": {
    "name": "Guillaume Nodet",
    "email": "gnodet@gmail.com",
    "time": "Mon Aug 03 02:36:22 2026 +0200"
  },
  "message": "Cache projectsUsingPlugin list to avoid O(N²) reactor scan\n\nInstallMojo.execute() computes the list of reactor projects using\nthe install plugin on every module invocation by streaming over all\nprojects and calling getPluginsAsMap() for each one. In a 4383-module\nreactor, this produces ~19.2M filter evaluations (4383² calls).\n\nJFR profiling shows this as 5.6% of total CPU time, all in\nPluginContainer.getPluginsAsMap() called from usingPlugin().\n\nFix: cache the computed list in the first reactor project\u0027s plugin\ncontext on first invocation. The list is invariant during a build —\nwhich projects have the install plugin configured does not change\nbetween module invocations. This turns O(N²) into O(N).\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d002520261b4ac4c3fa23b28297494ebfa0820e7",
      "old_mode": 33188,
      "old_path": "src/main/java/org/apache/maven/plugins/install/InstallMojo.java",
      "new_id": "f3183f537a4a9145ad18e5ac8d2290861af7b61f",
      "new_mode": 33188,
      "new_path": "src/main/java/org/apache/maven/plugins/install/InstallMojo.java"
    }
  ]
}
