It turns out that the biggest blocker in achieving /any/ reliable concurrent building within maven is the java file system, which is basically seems limited to single threaded visibility of file updates; I'm still trying to figure out what the rules /are/ in this context and I'm hoping someone here knows ;) (for the gory details as far as I've gotten you can check out this post http://incodewetrustinc.blogspot.com/2010/02/concurrency-in-maven.html).

Essentially this problem affects both the "parallel" mode and "weave" mode. Weave mode has higher concurrency and is hit harder. It seems like the only "solution" to this problem is aggressive forking; since this seems to delegate the whole issue to the OS. This may also mean that reliable concurrent building will only be available on OS'es that support reliable concurrent file visibility
(modern linuxes do this very well, don't know about the others).

Just to illustrate; on the C2D build box, my primary test build fails about once every 3-400 times with problems of this kind. Running the same build on the i7 box fails 1 in 5 times (the C2D is 32 bit JVM whilst the i7 is 64 bit vm (server) - which may also be relevant) - but it's file visibility issues that's the cause of the failure.

I'm still trying to understand what rules actually apply or what it is actually possible to trust in this regard. If I turn on full paranoia, it seems to me like even the current parallel artifact download mechanism can be hit by this problem, since the files are not being written to disk by the thread that later consumes them.

It seems to me like the only "reliable" way to do this (that is also "future proof") is to run every module single-threaded until package-phase, in regular reactor order (using just 1 thread *total*). Then you can fork "test" for all reactor modules and thereafter complete the rest of the reactor on the same 1 thread you had initially. I'm probably overly paranoid.

Anyone have any thoughts/experience with this subject ? Plz send me da codez ;)

Kristian











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

Reply via email to