Bug 516348 - dump thread info for each running or waiting job
Change-Id: I2d5055cc4ebf45fcd715fe913b105e6ba100d339
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/TestUtil.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/TestUtil.java
index 6437173..d0f785a 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/TestUtil.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/TestUtil.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.jdt.debug.tests;
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadInfo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
@@ -158,15 +160,22 @@
StringBuilder sb = new StringBuilder();
for (Job job : jobs) {
runningJobs.add(job);
- sb.append("'").append(job.toString()).append("'/");
+ sb.append("\n'").append(job.toString()).append("'/");
sb.append(job.getClass().getName());
+ Thread thread = job.getThread();
+ if (thread != null) {
+ ThreadInfo[] threadInfos = ManagementFactory.getThreadMXBean().getThreadInfo(new long[] { thread.getId() }, true, true);
+ if (threadInfos[0] != null) {
+ sb.append("\nthread info: ").append(threadInfos[0]);
+ }
+ }
sb.append(", ");
}
sb.setLength(sb.length() - 2);
return sb.toString();
}
- private static List<Job> getRunningOrWaitingJobs(Object jobFamily, Object... excludedFamilies) {
+ public static List<Job> getRunningOrWaitingJobs(Object jobFamily, Object... excludedFamilies) {
List<Job> running = new ArrayList<>();
Job[] jobs = Job.getJobManager().find(jobFamily);
for (Job job : jobs) {