[ 
https://issues.apache.org/jira/browse/MNG-7433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17508563#comment-17508563
 ] 

Dan Tran edited comment on MNG-7433 at 3/20/22, 7:49 AM:
---------------------------------------------------------

The below comment block in interesting


{code:java}
    /**
     * Aggregating mojo executions (possibly) modify all MavenProjects, 
including those that are currently in use
     * by concurrently running mojo executions. To prevent race conditions, an 
aggregating execution will block
     * all other executions until finished.
     * We also lock on a given project to forbid a forked lifecycle to be 
executed concurrently with the project.
     * TODO: ideally, the builder should take care of the ordering in a smarter 
way
     * TODO: and concurrency issues fixed with MNG-7157
     */
    private static class ProjectLock implements AutoCloseable
{code}
 
Wonder  if running invoke-plugin consider as a 'aggregated project' and its 
locks other modules at reactor from running


was (Author: dantran):
The below comment block in interesting


{code:java}
    /**
     * Aggregating mojo executions (possibly) modify all MavenProjects, 
including those that are currently in use
     * by concurrently running mojo executions. To prevent race conditions, an 
aggregating execution will block
     * all other executions until finished.
     * We also lock on a given project to forbid a forked lifecycle to be 
executed concurrently with the project.
     * TODO: ideally, the builder should take care of the ordering in a smarter 
way
     * TODO: and concurrency issues fixed with MNG-7157
     */
    private static class ProjectLock implements AutoCloseable
{code}


> Multiple maven instances working on same source tree can lock each other
> ------------------------------------------------------------------------
>
>                 Key: MNG-7433
>                 URL: https://issues.apache.org/jira/browse/MNG-7433
>             Project: Maven
>          Issue Type: Bug
>    Affects Versions: 3.8.5
>            Reporter: Dan Tran
>            Priority: Major
>
> I have a large multi modules java maven build where:
>   * phase 1 - basic build + unit tests + jacoco  - 40 min
>   * phase 2 - sonar:sonar 20 min
>   * phase 3 - final packaging and basic smoke-test - 20 min
> To take advantage of Maven multi-threaded build, during the reactor build, 
> one of our maven module spins another instance of Maven to run sonar:sonar 
> goal right after the basic build is done. 
> This means  our phase 2 and phase 3 run in parallel sharing the same source 
> tree, same local maven repo (where sonar:sonar should have all needed 
> dependencies at the share local maven repo to run its task)
> With maven-3.8.5, parallelization is no longer possible, phase 3 is blocked 
> until phase 2 is done. 
> I am able to trace it to  https://github.com/apache/maven/pull/628 where the 
> locking started the happen
> How does the lock mechanic work?  there must be a local file where both Maven 
> instances are watching each other.  Is there an option to disable this lock?



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to