From 3aba84723b784347849490d87e442ed8822b2f01 Mon Sep 17 00:00:00 2001 From: mchung Date: Tue, 26 May 2009 18:09:32 -0700 Subject: [PATCH] 6535104: TEST_BUG: FindDeadlocks.java fails intermittently. Summary: Retry a few times to check thread status before reporting failure Reviewed-by: swamyv --- .../ThreadMXBean/SynchronizerDeadlock.java | 23 +++++++++++++++---- .../SynchronizerLockingThread.java | 5 +++- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/test/java/lang/management/ThreadMXBean/SynchronizerDeadlock.java b/test/java/lang/management/ThreadMXBean/SynchronizerDeadlock.java index 2a1441cf8..cf2ba35c5 100644 --- a/test/java/lang/management/ThreadMXBean/SynchronizerDeadlock.java +++ b/test/java/lang/management/ThreadMXBean/SynchronizerDeadlock.java @@ -83,11 +83,24 @@ public class SynchronizerDeadlock { void waitUntilDeadlock() { barr.await(); - // sleep a little while to wait until threads are blocked. - try { - Thread.sleep(100); - } catch (InterruptedException e) { - // ignore + + for (int i=0; i < 100; i++) { + // sleep a little while to wait until threads are blocked. + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // ignore + } + boolean retry = false; + for (Thread t: dThreads) { + if (t.getState() == Thread.State.RUNNABLE) { + retry = true; + break; + } + } + if (!retry) { + break; + } } } diff --git a/test/java/lang/management/ThreadMXBean/SynchronizerLockingThread.java b/test/java/lang/management/ThreadMXBean/SynchronizerLockingThread.java index 83e07a88c..803d7917d 100644 --- a/test/java/lang/management/ThreadMXBean/SynchronizerLockingThread.java +++ b/test/java/lang/management/ThreadMXBean/SynchronizerLockingThread.java @@ -28,7 +28,7 @@ * monitors. * @author Mandy Chung * - * @build ThreadDump + * @build ThreadDump Utils */ import java.lang.management.*; @@ -63,6 +63,9 @@ public class SynchronizerLockingThread extends Thread { throw new RuntimeException(e); } } + + Utils.waitForBlockWaitingState(t1); + Utils.waitForBlockWaitingState(t2); } static long[] getThreadIds() { -- GitLab