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 2009/10/07 07:52:58 UTC

svn commit: r822596 - in /hadoop/hbase/trunk/src: java/org/apache/hadoop/hbase/ java/org/apache/hadoop/hbase/master/ java/org/apache/hadoop/hbase/regionserver/ test/org/apache/hadoop/hbase/

Author: stack
Date: Wed Oct  7 05:52:55 2009
New Revision: 822596

URL: http://svn.apache.org/viewvc?rev=822596&view=rev
Log:
HBASE-1887 Update hbase trunk to latests on hadoop 0.21 branch so we can all test sync/append; some more fixes

Modified:
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/LocalHBaseCluster.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/HBaseClusterTestCase.java
    hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/MiniHBaseCluster.java

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/LocalHBaseCluster.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/LocalHBaseCluster.java?rev=822596&r1=822595&r2=822596&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/LocalHBaseCluster.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/LocalHBaseCluster.java Wed Oct  7 05:52:55 2009
@@ -28,13 +28,12 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.util.ReflectionUtils;
-import org.apache.hadoop.hbase.master.HMaster;
+import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
-
+import org.apache.hadoop.hbase.master.HMaster;
 import org.apache.hadoop.hbase.regionserver.HRegionServer;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.util.Threads;
+import org.apache.hadoop.util.ReflectionUtils;
 
 /**
  * This class creates a single process HBase cluster. One thread is created for
@@ -249,18 +248,14 @@
 
   /**
    * Shut down the mini HBase cluster
+   * @throws IOException 
    */
-  public void shutdown() {
+  public void shutdown() throws IOException {
     LOG.debug("Shutting down HBase Cluster");
-    // Be careful how the hdfs shutdown thread runs in context where more than
-    // one regionserver in the mix.
-    Thread shutdownThread = null;
+    // Be careful about how we shutdown hdfs.
     synchronized (this.regionThreads) {
       for (RegionServerThread t: this.regionThreads) {
-        Thread tt = t.getRegionServer().setHDFSShutdownThreadOnExit(null);
-        if (shutdownThread == null && tt != null) {
-          shutdownThread = tt;
-        }
+        t.getRegionServer().setShutdownHDFS(false);
       }
     }
     if(this.master != null) {
@@ -291,7 +286,7 @@
         }
       }
     }
-    Threads.shutdown(shutdownThread);
+    FileSystem.closeAll();
     LOG.info("Shutdown " +
       ((this.regionThreads != null)? this.master.getName(): "0 masters") +
       " " + this.regionThreads.size() + " region server(s)");

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java?rev=822596&r1=822595&r2=822596&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java Wed Oct  7 05:52:55 2009
@@ -595,7 +595,7 @@
     Path logsDirPath =
       new Path(this.rootdir, HConstants.HREGION_LOGDIR_NAME);
     if (!this.fs.exists(logsDirPath)) {
-      if (this.fs.mkdirs(logsDirPath))
+      if (!this.fs.mkdirs(logsDirPath))
         throw new IOException("Failed create of " + logsDirPath);
     }
     FileStatus [] logFolders = this.fs.listStatus(logsDirPath);

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java?rev=822596&r1=822595&r2=822596&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java Wed Oct  7 05:52:55 2009
@@ -35,7 +35,6 @@
 import org.apache.hadoop.hbase.RemoteExceptionHandler;
 import org.apache.hadoop.hbase.client.HTable;
 import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.regionserver.HRegionServer.ToDoEntry;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.Writables;
 import org.apache.hadoop.util.StringUtils;
@@ -203,14 +202,14 @@
     oldRegionInfo.setSplit(true);
     // Inform the HRegionServer that the parent HRegion is no-longer online.
     this.server.removeFromOnlineRegions(oldRegionInfo);
-    
+
     Put put = new Put(oldRegionInfo.getRegionName());
     put.add(CATALOG_FAMILY, REGIONINFO_QUALIFIER, 
-        Writables.getBytes(oldRegionInfo));
+      Writables.getBytes(oldRegionInfo));
     put.add(CATALOG_FAMILY, SPLITA_QUALIFIER,
-        Writables.getBytes(newRegions[0].getRegionInfo()));
+      Writables.getBytes(newRegions[0].getRegionInfo()));
     put.add(CATALOG_FAMILY, SPLITB_QUALIFIER,
-        Writables.getBytes(newRegions[1].getRegionInfo()));
+      Writables.getBytes(newRegions[1].getRegionInfo()));
     t.put(put);
     
     // Add new regions to META

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=822596&r1=822595&r2=822596&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Wed Oct  7 05:52:55 2009
@@ -228,7 +228,7 @@
   // The main region server thread.
   private Thread regionServerThread;
 
-  // Run HDFS shutdown thread on exit if this is set. We clear this out when
+  // Run HDFS shutdown on exit if this is set. We clear this out when
   // doing a restart() to prevent closing of HDFS.
   private final AtomicBoolean shutdownHDFS = new AtomicBoolean(true);
 
@@ -672,11 +672,6 @@
 
     zooKeeperWrapper.close();
 
-    if (shutdownHDFS.get()) {
-      runThread(this.hdfsShutdownThread,
-          this.conf.getLong("hbase.dfs.shutdown.wait", 30000));
-    }
-
     LOG.info(Thread.currentThread().getName() + " exiting");
   }
 
@@ -708,31 +703,6 @@
     return null;
   }
 
-  /**
-   * Run and wait on passed thread in HRS context.
-   * @param t
-   * @param dfsShutdownWait
-   */
-  public void runThread(final Thread t, final long dfsShutdownWait) {
-    if (t ==  null) {
-      return;
-    }
-    t.start();
-    Threads.shutdown(t, dfsShutdownWait);
-  }
-
-  /**
-   * Set the hdfs shutdown thread to run on exit.  Pass null to disable
-   * running of the shutdown test.  Needed by tests.
-   * @param t Thread to run.  Pass null to disable tests.
-   * @return Previous occupant of the shutdown thread position.
-   */
-  public Thread setHDFSShutdownThreadOnExit(final Thread t) {
-    Thread old = this.hdfsShutdownThread;
-    this.hdfsShutdownThread = t;
-    return old;
-  }
-
   /*
    * Run init. Sets up hlog and starts up all server threads.
    * @param c Extra configuration.
@@ -766,9 +736,9 @@
       this.fs = FileSystem.get(this.conf);
 
       // Register shutdown hook for HRegionServer, runs an orderly shutdown
-      // when a kill signal is recieved
+      // when a kill signal is recieved.  Shuts down hdfs too if its supposed.
       Runtime.getRuntime().addShutdownHook(new ShutdownThread(this,
-          Thread.currentThread()));
+        Thread.currentThread(), this.shutdownHDFS));
       this.conf.setBoolean("fs.automatic.close", false);
 
       this.rootDir = new Path(this.conf.get(HConstants.HBASE_DIR));
@@ -786,6 +756,12 @@
     }
   }
 
+  public void setShutdownHDFS(final boolean b) {
+    this.shutdownHDFS.set(b);
+  }
+
+  public boolean getShutdownHDFS() {return this.shutdownHDFS.get();}
+
   /*
    * @param r Region to get RegionLoad for.
    * @return RegionLoad instance.
@@ -970,14 +946,18 @@
   private static class ShutdownThread extends Thread {
     private final HRegionServer instance;
     private final Thread mainThread;
+    private final AtomicBoolean shutdownHDFS;
     
     /**
      * @param instance
      * @param mainThread
+     * @param shutdownHDFS
      */
-    public ShutdownThread(HRegionServer instance, Thread mainThread) {
+    public ShutdownThread(final HRegionServer instance, final Thread mainThread,
+        final AtomicBoolean shutdownHDFS) {
       this.instance = instance;
       this.mainThread = mainThread;
+      this.shutdownHDFS = shutdownHDFS;
     }
 
     @Override
@@ -990,7 +970,7 @@
       // Wait for main thread to exit.
       Threads.shutdown(this.mainThread);
       try {
-        FileSystem.closeAll();
+        if (this.shutdownHDFS.get()) FileSystem.closeAll();
       } catch (IOException e) {
         e.printStackTrace();
       }
@@ -999,9 +979,6 @@
     }
   }
 
-  // We need to call HDFS shutdown when we are done shutting down
-  private Thread hdfsShutdownThread;
-
   /*
    * Inner class that runs on a long period checking if regions need major
    * compaction.

Modified: hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/HBaseClusterTestCase.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/HBaseClusterTestCase.java?rev=822596&r1=822595&r2=822596&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/HBaseClusterTestCase.java (original)
+++ hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/HBaseClusterTestCase.java Wed Oct  7 05:52:55 2009
@@ -115,32 +115,13 @@
     // continue
   } 
 
-  /*
-   * Create dir and set its value into configuration.
-   * @param key Create dir under test for this key.  Set its fully-qualified
-   * value into the conf.
-   * @throws IOException
-   */
-  private void setupDFSConfig(final String key) throws IOException {
-    Path basedir =
-      new Path(this.conf.get(TEST_DIRECTORY_KEY, "test/build/data"));
-    FileSystem fs = FileSystem.get(this.conf);
-    Path dir = fs.makeQualified(new Path(basedir, key));
-    // Delete if exists.  May contain data from old tests.
-    if (fs.exists(dir)) if (!fs.delete(dir, true)) throw new IOException("Delete: " + dir);
-    if (!fs.mkdirs(dir)) throw new IOException("Create: " + dir);
-    this.conf.set(key, dir.toString());
-  }
-
   @Override
   protected void setUp() throws Exception {
     try {
       if (this.startDfs) {
-        /*
-        setupDFSConfig("dfs.namenode.name.dir");
-        setupDFSConfig("dfs.datanode.data.dir");
-        */
-        this.dfsCluster = new MiniDFSCluster(this.conf, 2, true, null);
+        // This spews a bunch of warnings about missing scheme. TODO: fix.
+        this.dfsCluster = new MiniDFSCluster(0, this.conf, 2, true, true, true,
+          null, null, null, null);
 
         // mangle the conf so that the fs parameter points to the minidfs we
         // just started up

Modified: hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/MiniHBaseCluster.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/MiniHBaseCluster.java?rev=822596&r1=822595&r2=822596&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/MiniHBaseCluster.java (original)
+++ hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/MiniHBaseCluster.java Wed Oct  7 05:52:55 2009
@@ -147,7 +147,7 @@
     LOG.info("Stopping " + server.toString());
     if (!shutdownFS) {
       // Stop the running of the hdfs shutdown thread in tests.
-      server.getRegionServer().setHDFSShutdownThreadOnExit(null);
+      server.getRegionServer().setShutdownHDFS(false);
     }
     server.getRegionServer().stop();
     return server;
@@ -172,8 +172,9 @@
 
   /**
    * Shut down the mini HBase cluster
+   * @throws IOException 
    */
-  public void shutdown() {
+  public void shutdown() throws IOException {
     if (this.hbaseCluster != null) {
       this.hbaseCluster.shutdown();
     }