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]

Reply via email to