Uploaded image for project: 'Maven Surefire'
  1. Maven Surefire
  2. SUREFIRE-773

surefire forked processes not always killed after timeout

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 2.8
    • None
    • process forking
    • None
    • 64 bit RHEL 5.5 , 64-bit Java 1.6.0_23

    Description

      Our forked JUnit/surefire processes are not always stopping correctly when timing out within a Maven build
      (running inside our Jenkins CI server, ver 1.425).

      The maven build finishes and Jenkins shows a failed/unstable build.
      These running processes cause problems later, because the tests may be holding a resource like a port, and subsequent rebuilds fail because the
      tests fail.

      For example, even though no Maven builds are currently running, ps shows about a dozen Java processes running,
      with commands such as:

       
      /usr/local/java-1.6_23/jre/bin/java -Xms1g -Xmx5g -Djava.library.path=/u/jenkinsci/.hudson/jobs/rtolap.jtt.tests/workspace/target/lib \
         -jar /u/jenkinsci/.hudson/jobs/rtolap.jtt.tests/workspace/target/surefire/surefirebooter1374560535780866887.jar \
         /u/jenkinsci/.hudson/jobs/rtolap.jtt.tests/workspace/target/surefire/surefire65313...
      /usr/local/java-1.6_23/jre/bin/java -Xmx2g -Xms1g -Djava.library.path=/u/jenkinsci/.hudson/jobs/rtolap/workspace/target/lib \
         -jar /u/jenkinsci/.hudson/jobs/rtolap/workspace/target/surefire/surefirebooter6814971258434039335.jar \
         /u/jenkinsci/.hudson/jobs/rtolap/workspace/target/surefire/surefire5806103969370259371tmp /u/jenkinsci/...
      ...
      

      We have our Maven surefire preferences set to fork the tests (via a parent pom)

      pom.xml excerpt
       
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-surefire-plugin</artifactId>
                      <version>2.8</version>
                      <configuration>
                          <forkMode>once</forkMode>
                          <forkedProcessTimeoutInSeconds>720</forkedProcessTimeoutInSeconds>
                      </configuration>
                  </plugin>
      

      I suspect the timeout is the problem - i.e. perhaps the test is timing out and the attempt to kill the forked process
      fails, leaving it running.

      Has anyone seen something similar and/or know how to fix this so that surefire really kills the process?

      When this happens, doing

      kill <processid>

      (logged in as the process owner) usually does not work, but

      kill -9 <processid>

      does.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              djb David Biesack
              Votes:
              6 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: