From 51a50ea82657fce195d7dc1acad6a0aba528e109 Mon Sep 17 00:00:00 2001 From: Jonathan Hsieh Date: Wed, 13 Feb 2013 19:14:43 +0000 Subject: [PATCH] HBASE-7633 Fix flakey TestZKProcedure.testMultiCohortWithMemberTimeoutDuringPrepare git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/hbase-7290@1445868 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hbase/procedure/Procedure.java | 4 +++- .../org/apache/hadoop/hbase/procedure/TestZKProcedure.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java index 7cfb006d69d..89e283cbee0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java @@ -334,7 +334,9 @@ public class Procedure implements Callable, ForeignExceptionListener { } /** - * Waits until the entire procedure has globally completed, or has been aborted. + * Waits until the entire procedure has globally completed, or has been aborted. If an + * exception is thrown the procedure may or not have run cleanup to trigger the completion latch + * yet. * @throws ForeignException * @throws InterruptedException */ diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestZKProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestZKProcedure.java index a0fc5491fda..dfb951949f9 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestZKProcedure.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestZKProcedure.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyListOf; import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; @@ -316,7 +317,10 @@ public class TestZKProcedure { // ------------- // verification // ------------- - waitAndVerifyProc(coordinatorTask, once, never(), once, once, true); + + // always expect prepared, never committed, and possible to have cleanup and finish (racy since + // error case) + waitAndVerifyProc(coordinatorTask, once, never(), once, atMost(1), true); verifyCohortSuccessful(expected, subprocFactory, cohortTasks, once, never(), once, once, true);