[ 
http://jira.codehaus.org/browse/SUREFIRE-524?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jason Zaugg updated SUREFIRE-524:
---------------------------------

    Attachment: surefire-2.4.3-remote-shutdown.patch

Added test cases.

Refactored socket code to use NIO.

> Forked Process not terminated if maven process aborted. Provide means to 
> clean up.
> ----------------------------------------------------------------------------------
>
>                 Key: SUREFIRE-524
>                 URL: http://jira.codehaus.org/browse/SUREFIRE-524
>             Project: Maven Surefire
>          Issue Type: New Feature
>          Components: process forking
>    Affects Versions: 2.4.3
>         Environment: Windows XP, JDK 6
>            Reporter: Jason Zaugg
>            Priority: Minor
>         Attachments: surefire-2.4.3-remote-shutdown.patch, 
> surefire-2.4.3-remote-shutdown.patch
>
>
> Steps to reproduce:
> forkMode = once
> Run a test suite containing: Thread.sleep(Integer.MAX_VALUE)
> Kill maven build
> Observe that surefire JVM still running.
> Use Case:
> 1. Maven build on Contiunous Integration server forks a JVM to run long test 
> suite.
> 2. User aborts the build.
> 3. User expects the test suite to be aborted.
> Workarounds:
> * use forkMode=never
> This is a hassle for us -- at best we have to log in remotely to the build 
> server, find the process and kill it. At worst, we waste time misdiagnosing 
> failures in the subsequently triggered build that are due to concurrent tests 
> executing.
> I'm not sure what the expected behaviour is for maven / surefire currently in 
> this situation. 
> It is likely that is platform dependent. Windows is different from Unix in 
> the way it kills child processes. [1]
> One solution would be to open up a TCP port on the forked JVM to enable a 
> remote shutdown. This would integrate well with the Hudson Port Allocator 
> plugin [2]. At the conclusion of an aborted build, Hudson would clean up the 
> forked surefire JVM. Perhaps surefire itself could register a shutdown hook 
> in the maven JVM which would use attempt a remote shutdown of the forked JVM?
> I've attached a patch to demonstrate the idea. If you would like to include 
> this functionality, I could clean it up and add test cases.
> [1] 
> http://darkforge.blogspot.com/2007/09/windows-killableprocess-and-case-of.html
> [2] http://weblogs.java.net/blog/kohsuke/archive/2007/11/hudson_portallo.html
> <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-surefire-plugin</artifactId>
>                 <version>2.4.3.1</version>
>                 <configuration>
>                     <excludes>
>                         <exclude>${integration.test.pattern}</exclude>
>                     </excludes>
>                     <forkMode>once</forkMode>
>                     <remoteShutdownPort>8999</remoteShutdownPort>
>                 </configuration>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to