Hi Dan,

Would the multithreading feature make it easier or harder to implement
something like [1], ie distribute the different modules of a reactor
build across different machines ? Or is it completely unrelated you
think ?

Thanks,
Jorg Heymans

[1] 
http://n4.nabble.com/New-plugin-to-distribute-maven-jobs-steps-td585138.html#a585138

On Tue, Nov 10, 2009 at 4:02 AM, Dan Fabulich <d...@fabulich.com> 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

Reply via email to