elharo opened a new issue, #174: URL: https://github.com/apache/maven-toolchains-plugin/issues/174
## Summary `ToolchainMojo` uses a static `LOCK` object for `synchronized` around `toolchainManagerPrivate.storeToolchainToBuildContext()`. The `storeToolchainToBuildContext` method already operates on a per-session build context, making the static synchronization unnecessary and potentially causing contention in multi-module builds. ## Location `ToolchainMojo.java:29, 67-69` https://github.com/apache/maven-toolchains-plugin/blob/master/src/main/java/org/apache/maven/plugins/toolchain/ToolchainMojo.java#L29 https://github.com/apache/maven-toolchains-plugin/blob/master/src/main/java/org/apache/maven/plugins/toolchain/ToolchainMojo.java#L67-L69 ## Code ```java private static final Object LOCK = new Object(); // ... synchronized (LOCK) { toolchainManagerPrivate.storeToolchainToBuildContext(tc, session); } ``` ## Problem 1. The plugin is marked `threadSafe = true`, meaning Maven may execute it concurrently for different modules/sessions 2. `storeToolchainToBuildContext()` stores data into the build context, which is already per-session and thread-safe 3. The static lock introduces unnecessary contention: one module's toolchain selection blocks another unrelated module's selection 4. This defeats the purpose of `threadSafe = true` ## Impact In multi-module Maven builds where the toolchains plugin runs in multiple modules (e.g., via inherited plugin configuration), the static lock serializes what could otherwise run in parallel, slowing down builds. ## Suggested Fix Remove the `synchronized` block entirely, as `storeToolchainToBuildContext` already handles its own concurrency per session. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
