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

ASF GitHub Bot commented on MNG-5965:
-------------------------------------

GitHub user dbmeneses opened a pull request:

    https://github.com/apache/maven/pull/125

    [MNG-5965] Parallel build multiplies work if multiple goals are given

    This p/r should also fix MNG-5705.
    
    When multiple tasks are given so that they are grouped in different task 
segments, the MultiThreadedBuilder fails. 
    The reason is that it creates project segments, which is a set of unique 
pairs of (module, task).
    It then handles each task separately, and it will schedules the build of 
the task for **all** root module in those pairs, instead of scheduling only the 
root module which are associated with that particular task.
    
    Example, given the project with the following hierarchy of modules:
    ```
    root
    -- module1
    ```
    
    If we run `mvn task1 task2`, being task2 an aggregating task, we get the 
following project segments:
       (task1, root), (task1, module1), (task2, root).
    
    The MultiThreadedBuilder will first handle task1, and will schedule the 
build of: (task1, root), (task1, root).
    Each of these builds will then recursively build it's children, meaning 
that _task1 will be executed twice for every module in the project_.
    
    This fix changes the builder so that it considers the project segments of 
each task segment separately, by creating a ConcurrencyDependencyGraph for each 
task segment.
    
    I believe that MNG-5705 is a consequence of the same problem, because the 
builder will not count correctly the number of projects that are built because 
of the shared ConcurrencyDependencyGraph, resulting in a NPE.
    
    


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/dbmeneses/maven master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/maven/pull/125.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #125
    
----
commit 9518bb247bb5c9dbc267cdaa3407618178aad1f4
Author: Duarte Meneses <duarte.mene...@sonarsource.com>
Date:   2017-07-04T15:33:10Z

    [MNG-5965] Parallel build multiplies work if multiple goals are given

----


> Parallel build multiplies work if multiple goals are given
> ----------------------------------------------------------
>
>                 Key: MNG-5965
>                 URL: https://issues.apache.org/jira/browse/MNG-5965
>             Project: Maven
>          Issue Type: Bug
>          Components: Bootstrap & Build
>    Affects Versions: 3.3.9
>         Environment: Windows 7 64bit
>            Reporter: Matthias Schmalz
>         Attachments: parallel.test.zip
>
>
> When I run a parallel build which invokes multiple goals Maven multiplies the 
> work e.g. when I run
> install sonar:sonar
> Every phase is executed once as expected. However when I run
> install sonar:sonar -T 4
> Every phase is executed twice.
> The problem can be reproduced with a single simple Java project (of course 
> parallel builds are useless with a single module). Debugging showed that 
> every Mojo is really called twice per project.
> Find attached a simple project and two build outputs, where you can see that 
> the parallel build is doing everything twice (you can ignore that Sonar fails 
> in the end, due to no server is up).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to