You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2010/10/05 07:03:22 UTC

svn commit: r1004525 - in /hbase/trunk/src/main/java/org/apache/hadoop/hbase/master: AssignmentManager.java handler/DisableTableHandler.java handler/EnableTableHandler.java

Author: stack
Date: Tue Oct  5 05:03:22 2010
New Revision: 1004525

URL: http://svn.apache.org/viewvc?rev=1004525&view=rev
Log:
HBASE-3080 TestAdmin hanging on hudson

Modified:
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java?rev=1004525&r1=1004524&r2=1004525&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java Tue Oct  5 05:03:22 2010
@@ -1010,6 +1010,27 @@ public class AssignmentManager extends Z
   }
 
   /**
+   * Wait on regions to clean regions-in-transition.
+   * @param hri Region to wait on.
+   * @throws IOException
+   */
+  public void waitOnRegionToClearRegionsInTransition(final HRegionInfo hri)
+  throws IOException {
+    if (isRegionInTransition(hri) == null) return;
+    RegionState rs = null;
+    // There is already a timeout monitor on regions in transition so I
+    // should not have to have one here too?
+    while(!this.master.isStopped() && (rs = isRegionInTransition(hri)) != null) {
+      Threads.sleep(1000);
+      LOG.info("Waiting on " + rs + " to clear regions-in-transition");
+    }
+    if (this.master.isStopped()) {
+      LOG.info("Giving up wait on regions in " +
+        "transition because stoppable.isStopped is set");
+    }
+  }
+
+  /**
    * Checks if the table of the specified region has been disabled by the user.
    * @param regionName
    * @return

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java?rev=1004525&r1=1004524&r2=1004525&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java Tue Oct  5 05:03:22 2010
@@ -76,8 +76,12 @@ public class DisableTableHandler extends
     // TODO: Confirm we have parallel closing going on.
     List<HRegionInfo> regions = assignmentManager.getRegionsOfTable(tableName);
     // Unassign the online regions
-    for(HRegionInfo region : regions) {
+    for(HRegionInfo region: regions) {
       assignmentManager.unassign(region);
     }
+    // Wait on table's regions to clear region in transition.
+    for (HRegionInfo region: regions) {
+      this.assignmentManager.waitOnRegionToClearRegionsInTransition(region);
+    }
   }
 }
\ No newline at end of file

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java?rev=1004525&r1=1004524&r2=1004525&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java Tue Oct  5 05:03:22 2010
@@ -75,5 +75,9 @@ public class EnableTableHandler extends 
     for (HRegionInfo region : regions) {
       assignmentManager.assign(region);
     }
+    // Wait on table's regions to clear region in transition.
+    for (HRegionInfo region: regions) {
+      this.assignmentManager.waitOnRegionToClearRegionsInTransition(region);
+    }
   }
 }
\ No newline at end of file