You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2016/10/02 10:33:59 UTC

maven-surefire git commit: [SUREFIRE-1290] Orphan Fork JVMs should be killed after any previous finished with fatal error

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 <ti...@lycos.com>
Authored: Sun Oct 2 12:33:42 2016 +0200
Committer: Tibor17 <ti...@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.
      */