[
https://issues.apache.org/jira/browse/SUREFIRE-1302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15974378#comment-15974378
]
Olivier Peyrusse commented on SUREFIRE-1302:
--------------------------------------------
Hello Tibor,
quick note about {{-verbose:gc}}. I did not activate that option since it
triggered a lot of errors in surefire, and the results were useless.
All GC stats are received by the CommandReader, which fails to decode them -
logical since it is not supposed to be decoded.
{noformat}
output:
# Created on 2017-04-19T11:22:13.163
Corrupted stdin stream in forked JVM 1. Stream '[GC pause (System.gc()) (young)
(initial-mark) 43M->5994K(1024M), 0.0059696 secs]'.
# Created on 2017-04-19T11:22:13.166
Corrupted stdin stream in forked JVM 1. Stream '[GC
concurrent-root-region-scan-start]'.
java.lang.IllegalArgumentException: Stream stdin corrupted. Expected comma
after third character in command '[GC concurrent-root-region-scan-start]'.
at
org.apache.maven.plugin.surefire.booterclient.output.ForkClient$OperationalData.<init>(ForkClient.java:469)
at
org.apache.maven.plugin.surefire.booterclient.output.ForkClient.processLine(ForkClient.java:191)
at
org.apache.maven.plugin.surefire.booterclient.output.ForkClient.consumeLine(ForkClient.java:158)
at
org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer$Pumper.run(ThreadedStreamConsumer.java:87)
at java.lang.Thread.run(Thread.java:745)
# Created on 2017-04-19T11:22:13.166
Corrupted stdin stream in forked JVM 1. Stream '[GC
concurrent-root-region-scan-end, 0.0024680 secs]'.
{noformat}
> 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: Backlog
>
> Attachments:
> 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.3.15#6346)