Author: jimk
Date: Sat Mar  7 02:00:57 2009
New Revision: 751170

URL: http://svn.apache.org/viewvc?rev=751170&view=rev
Log:
HBASE-1169  When a shutdown is requested, stop scanning META regions 
immediately.

Modified:
    hadoop/hbase/branches/0.19/CHANGES.txt
    
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/HMaster.java
    
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/MetaScanner.java
    
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RegionManager.java
    
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RootScanner.java
    
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/ServerManager.java

Modified: hadoop/hbase/branches/0.19/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/branches/0.19/CHANGES.txt?rev=751170&r1=751169&r2=751170&view=diff
==============================================================================
--- hadoop/hbase/branches/0.19/CHANGES.txt (original)
+++ hadoop/hbase/branches/0.19/CHANGES.txt Sat Mar  7 02:00:57 2009
@@ -22,6 +22,8 @@
                to compact when loaded with hundreds of regions
    HBASE-1247  checkAndSave doesn't Write Ahead Log
    HBASE-1243  oldlogfile.dat is screwed, so is it's region
+   HBASE-1169  When a shutdown is requested, stop scanning META regions 
immediately
+
 
   IMPROVEMENTS
    HBASE-845   HCM.isTableEnabled doesn't really tell if it is, or not

Modified: 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/HMaster.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/HMaster.java?rev=751170&r1=751169&r2=751170&view=diff
==============================================================================
--- 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/HMaster.java 
(original)
+++ 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/HMaster.java 
Sat Mar  7 02:00:57 2009
@@ -104,7 +104,7 @@
   // started here in HMaster rather than have them have to know about the
   // hosting class
   volatile AtomicBoolean closed = new AtomicBoolean(true);
-  volatile boolean shutdownRequested = false;
+  volatile AtomicBoolean shutdownRequested = new AtomicBoolean(false);
   volatile boolean fsOk = true;
   final Path rootdir;
   private final HBaseConfiguration conf;
@@ -334,7 +334,7 @@
    */
   public HServerAddress getRootRegionLocation() {
     HServerAddress rootServer = null;
-    if (!shutdownRequested && !closed.get()) {
+    if (!shutdownRequested.get() && !closed.get()) {
       rootServer = regionManager.getRootRegionLocation();
     }
     return rootServer;
@@ -364,9 +364,14 @@
     try {
       while (!closed.get()) {
         // check if we should be shutting down
-        if (shutdownRequested && serverManager.numServers() == 0) {
-          startShutdown();
-          break;
+        if (shutdownRequested.get()) {
+          // The region servers won't all exit until we stop scanning the
+          // meta regions
+          regionManager.stopScanners();
+          if (serverManager.numServers() == 0) {
+            startShutdown();
+            break;
+          }
         }
         // work on the TodoQueue. If that fails, we should shut down.
         if (!processToDoQueue()) {
@@ -377,8 +382,6 @@
       LOG.fatal("Unhandled exception. Starting shutdown.", t);
       closed.set(true);
     }
-    // The region servers won't all exit until we stop scanning the meta 
regions
-    regionManager.stopScanners();
     
     // Wait for all the remaining region servers to report in.
     serverManager.letRegionServersShutdown();
@@ -532,7 +535,6 @@
    */
   void startShutdown() {
     closed.set(true);
-    regionManager.stopScanners();
     synchronized(toDoQueue) {
       toDoQueue.clear();                         // Empty the queue
       delayedToDoQueue.clear();                  // Empty shut down queue
@@ -592,7 +594,7 @@
 
   public void shutdown() {
     LOG.info("Cluster shutdown requested. Starting to quiesce servers");
-    this.shutdownRequested = true;
+    this.shutdownRequested.set(true);
   }
 
   public void createTable(HTableDescriptor desc)

Modified: 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/MetaScanner.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/MetaScanner.java?rev=751170&r1=751169&r2=751170&view=diff
==============================================================================
--- 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/MetaScanner.java
 (original)
+++ 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/MetaScanner.java
 Sat Mar  7 02:00:57 2009
@@ -51,7 +51,7 @@
    * @param master
    */
   public MetaScanner(HMaster master) {
-    super(master, false, master.metaRescanInterval, master.closed);
+    super(master, false, master.metaRescanInterval, master.shutdownRequested);
   }
 
   // Don't retry if we get an error while scanning. Errors are most often

Modified: 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RegionManager.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RegionManager.java?rev=751170&r1=751169&r2=751170&view=diff
==============================================================================
--- 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RegionManager.java
 (original)
+++ 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RegionManager.java
 Sat Mar  7 02:00:57 2009
@@ -159,7 +159,7 @@
   
   void reassignRootRegion() {
     unsetRootRegion();
-    if (!master.shutdownRequested) {
+    if (!master.shutdownRequested.get()) {
       synchronized (regionsInTransition) {
         RegionState s = new RegionState(HRegionInfo.ROOT_REGIONINFO);
         s.setUnassigned();

Modified: 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RootScanner.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RootScanner.java?rev=751170&r1=751169&r2=751170&view=diff
==============================================================================
--- 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RootScanner.java
 (original)
+++ 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/RootScanner.java
 Sat Mar  7 02:00:57 2009
@@ -32,7 +32,7 @@
    * @param master
    */
   public RootScanner(HMaster master) {
-    super(master, true, master.metaRescanInterval, master.closed);
+    super(master, true, master.metaRescanInterval, master.shutdownRequested);
   }
 
   /*

Modified: 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=751170&r1=751169&r2=751170&view=diff
==============================================================================
--- 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/ServerManager.java
 (original)
+++ 
hadoop/hbase/branches/0.19/src/java/org/apache/hadoop/hbase/master/ServerManager.java
 Sat Mar  7 02:00:57 2009
@@ -240,7 +240,7 @@
       }
     }
 
-    if (master.shutdownRequested) {
+    if (master.shutdownRequested.get()) {
       if(quiescedServers.get() >= serversToServerInfo.size()) {
         // If the only servers we know about are meta servers, then we can
         // proceed with shutdown


Reply via email to