maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SUREFIRE-1302) Surefire does not wait long enough for the forked VM and assumes it to be dead
Date Fri, 07 Jul 2017 21:16:00 GMT

    [ https://issues.apache.org/jira/browse/SUREFIRE-1302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16078700#comment-16078700
] 

Hudson commented on SUREFIRE-1302:
----------------------------------

UNSTABLE: Integrated in Jenkins build maven-surefire #1717 (See [https://builds.apache.org/job/maven-surefire/1717/])
[SUREFIRE-1302] Surefire does not wait long enough for the forked VM and (tibor17: [http://git-wip-us.apache.org/repos/asf/?p=maven-surefire.git&a=commit&h=c343cc412b986fd9da839696c709542d03679d68])
* (edit) surefire-booter/src/test/java/org/apache/maven/surefire/booter/JUnit4SuiteTest.java
* (edit) surefire-booter/pom.xml
* (edit) maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporterUtils.java
* (edit) maven-surefire-report-plugin/pom.xml
* (edit) maven-surefire-common/pom.xml
* (edit) maven-surefire-plugin/pom.xml
* (add) surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProcessInfo.java
* (edit) maven-failsafe-plugin/pom.xml
* (add) surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java
* (add) surefire-booter/src/test/java/org/apache/maven/surefire/booter/PpidCheckerTest.java
* (edit) surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
* (edit) surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1295AttributeJvmCrashesToTestsIT.java
* (edit) maven-surefire-plugin/src/site/apt/examples/shutdown.apt.vm
* (edit) surefire-api/pom.xml
* (edit) surefire-api/src/main/java/org/apache/maven/surefire/booter/CommandReader.java
* (edit) pom.xml


> Surefire does not wait long enough for the forked VM and assumes it to be dead
> ------------------------------------------------------------------------------
>
>                 Key: SUREFIRE-1302
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1302
>             Project: Maven Surefire
>          Issue Type: Request
>          Components: Maven Surefire Plugin
>    Affects Versions: 2.19.1
>            Reporter: Yuriy Zaplavnov
>            Assignee: Tibor Digana
>             Fix For: 2.20.1
>
>         Attachments: 2017-05-18T05-48-08_685-jvmRun1.dumpstream, surefire-gclog.log,
surefire-logs, surefire-tests-terminated-master-aa9330316038f6b46316ce36ff40714ffc7cf299.zip,
tests_log_01.txt, tests_log_02.txt
>
>
> This issue happens because surefire kills the forked container if it times out waiting
for the 'ping'.
> In org.apache.maven.surefire.booter.ForkedBooter class there is hardcoded constant PING_TIMEOUT_IN_SECONDS
 = 20 which is used in the following method:
> {code}
> private static ScheduledFuture<?> listenToShutdownCommands( CommandReader reader
)
>     {
>         reader.addShutdownListener( createExitHandler( reader ) );
>         AtomicBoolean pingDone = new AtomicBoolean( true );
>         reader.addNoopListener( createPingHandler( pingDone ) );
>         return JVM_TERMINATOR.scheduleAtFixedRate( createPingJob( pingDone, reader ),
>                                                    0,PING_TIMEOUT_IN_SECONDS, SECONDS
);
>     }
> {code}
> to create ScheduledFuture.
> In some of the cases the forked container might respond a bit later than it's expected
and surefire kills it
> {code}
> private static Runnable createPingJob( final AtomicBoolean pingDone, final CommandReader
reader  )
>     {
>         return new Runnable()
>         {
>             public void run()
>             {
>                 boolean hasPing = pingDone.getAndSet( false );
>                 if ( !hasPing )
>                 {
>                     exit( 1, KILL, reader, true );
>                 }
>             }
>         };
>     }
> {code}
> As long as we need to terminate it anyway, It would be really helpful if the problem
could be solved making the PING_TIMEOUT_IN_SECONDS  configurable with the ability to specify
the value from maven-surefire-plugin. 
> It would help to configure this timeout based on needs and factors of the projects where
surefire runs.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message