Repository: maven-surefire Updated Branches: refs/heads/master b2488b645 -> 33a32d132
[SUREFIRE-1290] Orphan Fork JVMs should be killed after any previous finished with fatal error Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/33a32d13 Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/33a32d13 Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/33a32d13 Branch: refs/heads/master Commit: 33a32d132922e3ab22502f95bb42aeecfe1531fb Parents: b2488b6 Author: Tibor17 <tibo...@lycos.com> Authored: Sun Oct 2 12:33:42 2016 +0200 Committer: Tibor17 <tibo...@lycos.com> Committed: Sun Oct 2 12:33:42 2016 +0200 ---------------------------------------------------------------------- .../plugin/surefire/AbstractSurefireMojo.java | 17 ++++++++++++++--- .../plugin/surefire/booterclient/ForkStarter.java | 8 ++++++++ .../surefire/booterclient/output/ForkClient.java | 8 ++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/33a32d13/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java index 1dd80b2..a3ab13e 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java @@ -1048,13 +1048,24 @@ public abstract class AbstractSurefireMojo } Properties originalSystemProperties = (Properties) System.getProperties().clone(); + ForkStarter forkStarter = null; try { - ForkStarter forkStarter = - createForkStarter( provider, forkConfiguration, classLoaderConfiguration, runOrderParameters, - getConsoleLogger() ); + forkStarter = createForkStarter( provider, forkConfiguration, classLoaderConfiguration, + runOrderParameters, getConsoleLogger() ); + return forkStarter.run( effectiveProperties, scanResult ); } + catch ( SurefireExecutionException e ) + { + forkStarter.killOrphanForks(); + throw e; + } + catch ( SurefireBooterForkException e ) + { + forkStarter.killOrphanForks(); + throw e; + } finally { System.setProperties( originalSystemProperties ); http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/33a32d13/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java index baea043..57c31b6 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java @@ -237,6 +237,14 @@ public class ForkStarter } } + public void killOrphanForks() + { + for ( ForkClient fork : currentForkClients ) + { + fork.kill(); + } + } + private RunResult run( SurefireProperties effectiveSystemProperties, Map<String, String> providerProperties ) throws SurefireBooterForkException { http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/33a32d13/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java index be3b09f..d59fdd0 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java @@ -112,6 +112,14 @@ public class ForkClient { } + public void kill() + { + if ( !saidGoodBye ) + { + notifiableTestStream.shutdown( KILL ); + } + } + /** * Called in concurrent Thread. */