Bladeren bron

HADOOP-2430 Master will not shut down if there are no active region servers

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@604309 13f79535-47bb-0310-9956-ffa450edef68
Jim Kellerman 17 jaren geleden
bovenliggende
commit
54dce3c96c
2 gewijzigde bestanden met toevoegingen van 23 en 11 verwijderingen
  1. 1 0
      src/contrib/hbase/CHANGES.txt
  2. 22 11
      src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMaster.java

+ 1 - 0
src/contrib/hbase/CHANGES.txt

@@ -81,6 +81,7 @@ Trunk (unreleased changes)
    HADOOP-2418 Fix assertion failures in TestTableMapReduce, TestTableIndex,
                and TestTableJoinMapReduce
    HADOOP-2414 Fix ArrayIndexOutOfBoundsException in bloom filters.
+   HADOOP-2430 Master will not shut down if there are no active region servers
    
   IMPROVEMENTS
    HADOOP-2401 Add convenience put method that takes writable

+ 22 - 11
src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMaster.java

@@ -1029,6 +1029,10 @@ public class HMaster extends Thread implements HConstants, HMasterInterface,
      */
     try {
       for (RegionServerOperation op = null; !closed.get(); ) {
+        if (shutdownRequested && serversToServerInfo.size() == 0) {
+          startShutdown();
+          break;
+        }
         if (rootRegionLocation.get() != null) {
           // We can't process server shutdowns unless the root region is online 
 
@@ -1174,7 +1178,23 @@ public class HMaster extends Thread implements HConstants, HMasterInterface,
       LOG.error("Failed startup", e);
     }
   }
-  
+
+  /*
+   * Start shutting down the master
+   */
+  private void startShutdown() {
+    closed.set(true);
+    stopScanners();
+    synchronized(toDoQueue) {
+      toDoQueue.clear();                         // Empty the queue
+      delayedToDoQueue.clear();                  // Empty shut down queue
+      toDoQueue.notifyAll();                     // Wake main thread
+    }
+    synchronized (serversToServerInfo) {
+      serversToServerInfo.notifyAll();
+    }
+  }
+
   /*
    * Stop the root and meta scanners so that the region servers serving meta
    * regions can shut down.
@@ -1356,16 +1376,7 @@ public class HMaster extends Thread implements HConstants, HMasterInterface,
       // If the only servers we know about are meta servers, then we can
       // proceed with shutdown
       LOG.info("All user tables quiesced. Proceeding with shutdown");
-      closed.set(true);
-      stopScanners();
-      synchronized(toDoQueue) {
-        toDoQueue.clear();                         // Empty the queue
-        delayedToDoQueue.clear();                  // Empty shut down queue
-        toDoQueue.notifyAll();                     // Wake main thread
-      }
-      synchronized (serversToServerInfo) {
-        serversToServerInfo.notifyAll();
-      }
+      startShutdown();
     }
 
     if (shutdownRequested && !closed.get()) {