You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by je...@apache.org on 2013/08/24 03:09:44 UTC

svn commit: r1517095 - in /hbase/trunk/hbase-server/src: main/java/org/apache/hadoop/hbase/procedure/Procedure.java test/java/org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.java

Author: jeffreyz
Date: Sat Aug 24 01:09:43 2013
New Revision: 1517095

URL: http://svn.apache.org/r1517095
Log:
HBASE-9318: Procedure#waitForLatch may not throw error even there is one

Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java?rev=1517095&r1=1517094&r2=1517095&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/Procedure.java Sat Aug 24 01:09:43 2013
@@ -375,5 +375,9 @@ public class Procedure implements Callab
           + wakeFrequency + " ms)"); */
       released = latch.await(wakeFrequency, TimeUnit.MILLISECONDS);
     }
+    // check error again in case an error raised during last wait
+    if (monitor != null) {
+      monitor.rethrowException();
+    }
   }
 }

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.java?rev=1517095&r1=1517094&r2=1517095&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.java Sat Aug 24 01:09:43 2013
@@ -39,6 +39,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.hadoop.hbase.SmallTests;
 import org.apache.hadoop.hbase.errorhandling.ForeignException;
@@ -136,7 +137,7 @@ public class TestProcedureCoordinator {
     // run the operation
     proc = coordinator.startProcedure(proc.getErrorMonitor(), procName, procData, expected);
     // and wait for it to finish
-    proc.waitForCompleted();
+    while(!proc.completedLatch.await(WAKE_FREQUENCY, TimeUnit.MILLISECONDS));
     verify(procSpy, atLeastOnce()).receive(any(ForeignException.class));
     verify(coordinator, times(1)).rpcConnectionFailure(anyString(), eq(cause));
     verify(controller, times(1)).sendGlobalBarrierAcquire(procSpy, procData, expected);
@@ -168,7 +169,7 @@ public class TestProcedureCoordinator {
     // run the operation
     Procedure task = coordinator.startProcedure(spy.getErrorMonitor(), procName, procData, expected);
     // and wait for it to finish
-    task.waitForCompleted();
+    while(!task.completedLatch.await(WAKE_FREQUENCY, TimeUnit.MILLISECONDS));
     verify(spy, atLeastOnce()).receive(any(ForeignException.class));
     verify(coordinator, times(1)).rpcConnectionFailure(anyString(), eq(cause));
     verify(controller, times(1)).sendGlobalBarrierAcquire(eq(spy),