This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch buildfix
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
The following commit(s) were added to refs/heads/buildfix by this push:
new 88b80b5 investigating build failure
88b80b5 is described below
commit 88b80b5b4ad0affdf2633271056b95a035dbf99f
Author: tibordigana <[email protected]>
AuthorDate: Thu Jul 18 23:41:49 2019 +0200
investigating build failure
---
.../apache/maven/surefire/booter/ForkedBooter.java | 46 +++++++++++++++++-----
1 file changed, 37 insertions(+), 9 deletions(-)
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 fd5deae..51e3f9a 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
@@ -30,17 +30,19 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadInfo;
+import java.lang.management.ThreadMXBean;
import java.lang.reflect.InvocationTargetException;
import java.security.AccessControlException;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import java.util.Date;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.Semaphore;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicBoolean;
+import static java.lang.Math.max;
import static java.lang.Thread.currentThread;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
@@ -62,6 +64,7 @@ public final class ForkedBooter
{
private static final long DEFAULT_SYSTEM_EXIT_TIMEOUT_IN_SECONDS = 30L;
private static final long PING_TIMEOUT_IN_SECONDS = 30L;
+ private static final long ONE_SECOND_IN_MILLIS = 1000L;
private static final String LAST_DITCH_SHUTDOWN_THREAD =
"surefire-forkedjvm-last-ditch-daemon-shutdown-thread-";
private static final String PING_THREAD = "surefire-forkedjvm-ping-";
@@ -295,7 +298,7 @@ public final class ForkedBooter
private void acknowledgedExit()
{
- /*final Semaphore barrier = new Semaphore( 0 );
+ final Semaphore barrier = new Semaphore( 0 );
commandReader.addByeAckListener( new CommandListener()
{
@Override
@@ -304,11 +307,11 @@ public final class ForkedBooter
barrier.release();
}
}
- );*/
+ );
eventChannel.bye();
- /*launchLastDitchDaemonShutdownThread( 0 );
+ launchLastDitchDaemonShutdownThread( 0 );
long timeoutMillis = max( systemExitTimeoutInSeconds *
ONE_SECOND_IN_MILLIS, ONE_SECOND_IN_MILLIS );
- acquireOnePermit( barrier, timeoutMillis );*/
+ acquireOnePermit( barrier, timeoutMillis );
cancelPingScheduler();
commandReader.stop();
System.exit( 0 );
@@ -342,7 +345,7 @@ public final class ForkedBooter
@SuppressWarnings( "checkstyle:emptyblock" )
private void launchLastDitchDaemonShutdownThread( final int returnCode )
{
- /*getJvmTerminator().schedule( new Runnable()
+ getJvmTerminator().schedule( new Runnable()
{
@Override
public void run()
@@ -350,16 +353,17 @@ public final class ForkedBooter
kill( returnCode );
}
}, systemExitTimeoutInSeconds, SECONDS
- );*/
+ );
- createPingScheduler().scheduleAtFixedRate( new Runnable()
+ /*createPingScheduler().scheduleAtFixedRate( new Runnable()
{
@Override
public void run()
{
DumpErrorSingleton.getSingleton().dumpText( new Date() + " I
am in PING." );
+ kill( returnCode );
}
- }, 0L, PING_TIMEOUT_IN_SECONDS, SECONDS );
+ }, 0L, PING_TIMEOUT_IN_SECONDS, SECONDS );*/
}
private void invokeProviderInSameClassLoader( ForkingReporterFactory
factory )
@@ -482,4 +486,28 @@ public final class ForkedBooter
return pingScheduler.isShutdown();
}
}
+
+ public static String generateThreadDump()
+ {
+ StringBuilder dump = new StringBuilder();
+ ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
+ ThreadInfo[] threadInfos = threadMXBean.getThreadInfo(
threadMXBean.getAllThreadIds(), 100 );
+ for ( ThreadInfo threadInfo : threadInfos )
+ {
+ dump.append( '"' );
+ dump.append( threadInfo.getThreadName() );
+ dump.append( "\" " );
+ Thread.State state = threadInfo.getThreadState();
+ dump.append( "\n java.lang.Thread.State: " );
+ dump.append( state );
+ StackTraceElement[] stackTraceElements =
threadInfo.getStackTrace();
+ for ( StackTraceElement stackTraceElement : stackTraceElements )
+ {
+ dump.append( "\n at " );
+ dump.append( stackTraceElement );
+ }
+ dump.append( "\n\n" );
+ }
+ return dump.toString();
+ }
}