[MNG-5456] Incorrect exception handling in parallel build
Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/97367372 Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/97367372 Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/97367372 Branch: refs/heads/slf4j-log4j2 Commit: 973673721b138e8dde68997fe198dff1417c2299 Parents: eb164f5 Author: Kristian Rosenvold <kristian.rosenv...@gmail.com> Authored: Sat Mar 30 07:00:05 2013 +0100 Committer: Kristian Rosenvold <kristian.rosenv...@gmail.com> Committed: Sat Mar 30 07:00:05 2013 +0100 ---------------------------------------------------------------------- .../main/java/org/apache/maven/DefaultMaven.java | 28 +++++++------- .../internal/LifecycleThreadedBuilder.java | 5 ++- 2 files changed, 18 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/97367372/maven-core/src/main/java/org/apache/maven/DefaultMaven.java ---------------------------------------------------------------------- diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index 070b7f7..c80134f 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -171,17 +171,17 @@ public class DefaultMaven } catch ( OutOfMemoryError e ) { - result = processResult( new DefaultMavenExecutionResult(), e ); + result = addExceptionToResult(new DefaultMavenExecutionResult(), e); } catch ( MavenExecutionRequestPopulationException e ) { - result = processResult( new DefaultMavenExecutionResult(), e ); + result = addExceptionToResult(new DefaultMavenExecutionResult(), e); } catch ( RuntimeException e ) { result = - processResult( new DefaultMavenExecutionResult(), - new InternalErrorException( "Internal error: " + e, e ) ); + addExceptionToResult(new DefaultMavenExecutionResult(), + new InternalErrorException("Internal error: " + e, e)); } finally { @@ -211,7 +211,7 @@ public class DefaultMaven } catch ( LocalRepositoryNotAccessibleException e ) { - return processResult( result, e ); + return addExceptionToResult(result, e); } DelegatingLocalArtifactRepository delegatingLocalArtifactRepository = @@ -233,7 +233,7 @@ public class DefaultMaven } catch ( MavenExecutionException e ) { - return processResult( result, e ); + return addExceptionToResult(result, e); } eventCatapult.fire( ExecutionEvent.Type.ProjectDiscoveryStarted, session, null ); @@ -249,7 +249,7 @@ public class DefaultMaven } catch ( ProjectBuildingException e ) { - return processResult( result, e ); + return addExceptionToResult(result, e); } session.setProjects( projects ); @@ -275,7 +275,7 @@ public class DefaultMaven } catch ( org.apache.maven.DuplicateProjectException e ) { - return processResult( result, e ); + return addExceptionToResult(result, e); } repoSession.setReadOnly(); @@ -292,7 +292,7 @@ public class DefaultMaven } catch ( MavenExecutionException e ) { - return processResult( result, e ); + return addExceptionToResult(result, e); } finally { @@ -315,15 +315,15 @@ public class DefaultMaven ProjectCycleException error = new ProjectCycleException( message, e ); - return processResult( result, error ); + return addExceptionToResult(result, error); } catch ( DuplicateProjectException e ) { - return processResult( result, e ); + return addExceptionToResult(result, e); } catch ( MavenExecutionException e ) { - return processResult( result, e ); + return addExceptionToResult(result, e); } result.setTopologicallySortedProjects( session.getProjects() ); @@ -339,7 +339,7 @@ public class DefaultMaven if ( session.getResult().hasExceptions() ) { - return processResult( result, session.getResult().getExceptions().get( 0 ) ); + return addExceptionToResult(result, session.getResult().getExceptions().get(0)); } return result; @@ -592,7 +592,7 @@ public class DefaultMaven return lifecycleListeners; } - private MavenExecutionResult processResult( MavenExecutionResult result, Throwable e ) + private MavenExecutionResult addExceptionToResult(MavenExecutionResult result, Throwable e) { if ( !result.getExceptions().contains( e ) ) { http://git-wip-us.apache.org/repos/asf/maven/blob/97367372/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleThreadedBuilder.java ---------------------------------------------------------------------- diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleThreadedBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleThreadedBuilder.java index aa95f2a..dbd3f4f 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleThreadedBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleThreadedBuilder.java @@ -78,7 +78,8 @@ public class LifecycleThreadedBuilder } catch ( Exception e ) { - break; // Why are we just ignoring this exception? Are exceptions are being used for flow control + session.getResult().addException(e); + break; } } @@ -125,10 +126,12 @@ public class LifecycleThreadedBuilder } catch ( InterruptedException e ) { + rootSession.getResult().addException(e); break; } catch ( ExecutionException e ) { + rootSession.getResult().addException(e); break; } }