This is more a plan to implement the existing multi-threading patch
than an actual proposal. Imo a proposal should describe the
solution...ie how will this multi-threading work, how will it decide
what to build and in what order, etc. I think essentially the details
you Ralph and I briefly discussed at ApacheCon.

On Sat, Nov 14, 2009 at 2:21 PM, Dan Fabulich <d...@fabulich.com> wrote:
> This is now an official proposal here:
>
> http://cwiki.apache.org/confluence/display/MAVEN/Experimental+Multithreading+Support
>
> (I didn't have karma to edit this page until a few minutes ago; you might
> need to request karma as well, especially since this the first proposal in
> this new location.)
>
> -Dan
>
> Dan Fabulich wrote:
>
>>
>> On Friday I was playing cowboy with my experimental thread support, but
>> here's a more formal proposal around parallel project support in Maven 3.0.
>>
>> OUTSTANDING ISSUES
>>
>> In my earlier revision 833566, I attempted to fix MNG-3004:
>>
>> "Allow build lifecycle to execute projects in parallel"
>> http://jira.codehaus.org/browse/MNG-3004
>>
>> The general consensus around this bug (which has 25 votes) is that
>> multithreading support can't work correctly right now because of MNG-2802:
>>
>> "Concurrent-safe access to local Maven repository"
>> http://jira.codehaus.org/browse/MNG-2802
>>
>> Several people have remarked in comments to MNG-3004 that it's appropriate
>> to try to fix MNG-3004 (parallel projects) without fixing MNG-2802
>> (thread-safe local repo).  In doing so, we'll allow users to optionally
>> enable building multiple projects simultaneously.  This is worth doing,
>> because it can be tested in the wild, and because for some users, it will be
>> immediately useful (e.g. especially if you use --offline mode).
>>
>> I agree with these comments, and attempted to implement them in revision
>> 833566.
>>
>> MY PROPOSAL
>>
>> I attempted to check in the code in time for 3.0-alpha-3 a few days ago.
>> That code was rolled back over the weekend and now lives in the MNG-3004
>> branch, because it broke integration tests.  All integration tests now pass
>> on my machine with the MNG-3004 branch, so I'd like to land it back in trunk
>> again and re-cut 3.0-alpha-3 with this additional feature.
>>
>> As I stated on Friday, using the MNG-3004 branch, you can now do this:
>>
>>  mvn install -Dmaven.threads.experimental=4
>>
>> It works on my machine.  If it works for you great; if it doesn't, we can
>> figure out what's wrong together.
>>
>> WHY ALPHA-3?
>>
>> I'd like to land it back in alpha-3 because:
>> * alpha-2 was in February; I don't want to wait for even four months to
>> start testing this in the wild
>> * I did check it in before alpha-3 was released, but it was rolled back
>> quickly before the release vote was called
>> * Otherwise I'd want to try to release alpha-4 immediately after alpha-3,
>> which seems wasteful
>>
>> A NOTE ABOUT DEFAULTS
>>
>> Currently the code defaults to maven.threads.experimental=1.  This fires
>> up a single executor thread who does all work; the main thread joins to wait
>> for it to finish.  It's also possible to set maven.threads.experimental=0,
>> in which case everything is done on the main thread, just like in alpha-2.
>>
>> If there is consensus, I'd be happy to set the default value to 0, though
>> that increases the risk that the multithreaded code will get less coverage
>> in the wild.  I think leaving the value at 1 is a good compromise between
>> avoiding complex threading issues and exercising tricky code.
>>
>> WHAT'S IN THE FUTURE?
>>
>> Post alpha-3 I'm keen on implementing a settings.xml option allowing users
>> to configure their local repository layout.  This will allow users to choose
>> an alternate implementation that is thread-safe.
>>
>> Additionally, I think that this feature needs more tooling to make
>> parallel projects understandable.  The logger should be enhanced to identify
>> which projects are logging which messages, and the final output of Maven
>> should report more clearly which projects had warning/error messages, and
>> how many such messages were reported.
>>
>> What do you say?
>>
>> -Dan
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>> For additional commands, e-mail: dev-h...@maven.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to