You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by st...@apache.org on 2007/12/14 18:12:09 UTC

svn commit: r604233 - in /lucene/hadoop/trunk/src/contrib/hbase: CHANGES.txt bin/hbase-daemon.sh src/java/org/apache/hadoop/hbase/HRegionServer.java

Author: stack
Date: Fri Dec 14 09:12:09 2007
New Revision: 604233

URL: http://svn.apache.org/viewvc?rev=604233&view=rev
Log:
HADOOP-2286 Add being able to shutdown regionservers

Modified:
    lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt
    lucene/hadoop/trunk/src/contrib/hbase/bin/hbase-daemon.sh
    lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java

Modified: lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt?rev=604233&r1=604232&r2=604233&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/CHANGES.txt Fri Dec 14 09:12:09 2007
@@ -123,7 +123,9 @@
                (Edward Yoon via Stack)
    HADOOP-2351 If select command returns no result, it doesn't need to show the
                header information (Edward Yoon via Stack)
+   HADOOP-2285 Add being able to shutdown regionservers (Dennis Kubes via Stack)
                
+
 
 Release 0.15.1
 Branch 0.15

Modified: lucene/hadoop/trunk/src/contrib/hbase/bin/hbase-daemon.sh
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/bin/hbase-daemon.sh?rev=604233&r1=604232&r2=604233&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/bin/hbase-daemon.sh (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/bin/hbase-daemon.sh Fri Dec 14 09:12:09 2007
@@ -128,10 +128,14 @@
     if [ -f $pid ]; then
       if kill -0 `cat $pid` > /dev/null 2>&1; then
         echo -n stopping $command
-        nohup nice -n $HADOOP_NICENESS "$HBASE_HOME"/bin/hbase \
-            --hadoop "${HADOOP_HOME}" \
-            --config "${HADOOP_CONF_DIR}" --hbaseconfig "${HBASE_CONF_DIR}" \
-            $command $startStop "$@" > "$log" 2>&1 < /dev/null &
+        if [ "$command" = "regionserver" ]; then
+          kill `cat $pid` > /dev/null 2>&1
+        else
+          nohup nice -n $HADOOP_NICENESS "$HBASE_HOME"/bin/hbase \
+              --hadoop "${HADOOP_HOME}" \
+              --config "${HADOOP_CONF_DIR}" --hbaseconfig "${HBASE_CONF_DIR}" \
+              $command $startStop "$@" > "$log" 2>&1 < /dev/null &
+        fi
         while kill -0 `cat $pid` > /dev/null 2>&1; do
           echo -n "."
           sleep 1;

Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java?rev=604233&r1=604232&r2=604233&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java Fri Dec 14 09:12:09 2007
@@ -132,6 +132,31 @@
   
   /** region server process name */
   public static final String REGIONSERVER = "regionserver";
+  
+  /**
+   * Thread to shutdown the region server in an orderly manner.  This thread
+   * is registered as a shutdown hook in the HRegionServer constructor and is
+   * only called when the HRegionServer receives a kill signal.
+   */
+  class ShutdownThread 
+    extends Thread {
+    
+    private final HRegionServer instance;
+    
+    public ShutdownThread(HRegionServer instance) {
+      this.instance = instance;
+    }
+
+    public synchronized void start() {
+      LOG.info("Starting shutdown thread.");
+      
+      // tell the region server to stop and wait for it to complete
+      instance.stop();
+      instance.join();
+      LOG.info("Shutdown thread complete");
+    }    
+    
+  }
 
   /** Queue entry passed to flusher, compactor and splitter threads */
   class QueueEntry implements Delayed {
@@ -646,6 +671,10 @@
      this.leases = new Leases(
        conf.getInt("hbase.regionserver.lease.period", 3 * 60 * 1000),
        this.threadWakeFrequency);
+     
+     // Register shutdown hook for HRegionServer, runs an orderly shutdown
+     // when a kill signal is recieved
+     Runtime.getRuntime().addShutdownHook(new ShutdownThread(this));
   }
 
   /**
@@ -1736,8 +1765,9 @@
       }
       
       if (cmd.equals("stop")) {
-        printUsageAndExit("There is no regionserver stop mechanism. To stop " +
-          "regionservers, shutdown the hbase master");
+        printUsageAndExit("To shutdown the regionserver run " +
+        		"bin/hbase-daemon.sh stop regionserver or send a kill signal to" +
+        		"the regionserver pid");
       }
       
       // Print out usage if we get to here.