Repository: maven-surefire Updated Branches: refs/heads/master 63657b6e7 -> fac376c5f
[SUREFIRE-1374] std/in stream corrupted 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/fac376c5 Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/fac376c5 Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/fac376c5 Branch: refs/heads/master Commit: fac376c5f7d1b5ca9b2ec220b39b35397d04326a Parents: 63657b6 Author: Tibor17 <tibordig...@apache.org> Authored: Fri Jun 2 07:26:35 2017 +0200 Committer: Tibor17 <tibordig...@apache.org> Committed: Fri Jun 2 07:26:35 2017 +0200 ---------------------------------------------------------------------- .../maven/surefire/booter/ForkedBooter.java | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/fac376c5/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java ---------------------------------------------------------------------- diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java index 8dabaef..1e3863e 100644 --- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java +++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java @@ -76,6 +76,7 @@ public final class ForkedBooter private static final long DEFAULT_SYSTEM_EXIT_TIMEOUT_IN_SECONDS = 30; private static final long PING_TIMEOUT_IN_SECONDS = 20; private static final long ONE_SECOND_IN_MILLIS = 1000; + private static final CommandReader COMMAND_READER = startupMasterProcessReader(); private static volatile ScheduledThreadPoolExecutor jvmTerminator; private static volatile long systemExitTimeoutInSeconds = DEFAULT_SYSTEM_EXIT_TIMEOUT_IN_SECONDS; @@ -88,8 +89,7 @@ public final class ForkedBooter */ public static void main( String... args ) { - final CommandReader reader = startupMasterProcessReader(); - final ExecutorService pingScheduler = isDebugging() ? null : listenToShutdownCommands( reader ); + final ExecutorService pingScheduler = isDebugging() ? null : listenToShutdownCommands(); final PrintStream originalOut = out; try { @@ -159,7 +159,7 @@ public final class ForkedBooter encode( stringBuilder, stackTraceWriter, false ); encodeAndWriteToOutput( ( (char) BOOTERCODE_ERROR ) + ",0," + stringBuilder + "\n", originalOut ); } - acknowledgedExit( reader, originalOut, pingScheduler ); + acknowledgedExit( originalOut, pingScheduler ); } catch ( Throwable t ) { @@ -202,11 +202,11 @@ public final class ForkedBooter return getReader(); } - private static ExecutorService listenToShutdownCommands( CommandReader reader ) + private static ExecutorService listenToShutdownCommands() { - reader.addShutdownListener( createExitHandler() ); + COMMAND_READER.addShutdownListener( createExitHandler() ); AtomicBoolean pingDone = new AtomicBoolean( true ); - reader.addNoopListener( createPingHandler( pingDone ) ); + COMMAND_READER.addNoopListener( createPingHandler( pingDone ) ); Runnable pingJob = createPingJob( pingDone ); ScheduledExecutorService pingScheduler = createPingScheduler(); pingScheduler.scheduleAtFixedRate( pingJob, 0, PING_TIMEOUT_IN_SECONDS, SECONDS ); @@ -275,19 +275,21 @@ public final class ForkedBooter private static void kill() { + COMMAND_READER.stop(); Runtime.getRuntime().halt( 1 ); } private static void exit( int returnCode ) { launchLastDitchDaemonShutdownThread( returnCode ); + COMMAND_READER.stop(); System.exit( returnCode ); } - private static void acknowledgedExit( CommandReader reader, PrintStream originalOut, ExecutorService pingScheduler ) + private static void acknowledgedExit( PrintStream originalOut, ExecutorService pingScheduler ) { final Semaphore barrier = new Semaphore( 0 ); - reader.addByeAckListener( new CommandListener() + COMMAND_READER.addByeAckListener( new CommandListener() { @Override public void update( Command command ) @@ -301,6 +303,7 @@ public final class ForkedBooter long timeoutMillis = max( systemExitTimeoutInSeconds * ONE_SECOND_IN_MILLIS, ONE_SECOND_IN_MILLIS ); acquireOnePermit( barrier, timeoutMillis ); cancelPingScheduler( pingScheduler ); + COMMAND_READER.stop(); System.exit( 0 ); } @@ -367,6 +370,7 @@ public final class ForkedBooter @Override public void run() { + COMMAND_READER.stop(); Runtime.getRuntime().halt( returnCode ); } }, systemExitTimeoutInSeconds, SECONDS