You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jd...@apache.org on 2009/02/08 19:37:01 UTC

svn commit: r742137 - in /hadoop/hbase/trunk: CHANGES.txt conf/hbase-default.xml src/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWrapper.java src/test/org/apache/hadoop/hbase/TestZooKeeper.java

Author: jdcryans
Date: Sun Feb  8 18:37:00 2009
New Revision: 742137

URL: http://svn.apache.org/viewvc?rev=742137&view=rev
Log:
HBASE-1191  ZooKeeper ensureParentExists calls fail 
               on absolute path (via Nitay Joffe)
HBASE-1187  After disabling/enabling a table, the regions seems to
               be assigned to only 1-2 region servers

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/conf/hbase-default.xml
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWrapper.java
    hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/TestZooKeeper.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=742137&r1=742136&r2=742137&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Sun Feb  8 18:37:00 2009
@@ -46,6 +46,10 @@
                (Toby White via Andrew Purtell)
    HBASE-1180  Add missing import statements to SampleUploader and remove
                unnecessary @Overrides (Ryan Smith via Andrew Purtell)
+   HBASE-1191  ZooKeeper ensureParentExists calls fail 
+               on absolute path (via Nitay Joffe)
+   HBASE-1187  After disabling/enabling a table, the regions seems to 
+               be assigned to only 1-2 region servers
 
 Release 0.19.0 - 01/21/2009
   INCOMPATIBLE CHANGES

Modified: hadoop/hbase/trunk/conf/hbase-default.xml
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/conf/hbase-default.xml?rev=742137&r1=742136&r2=742137&view=diff
==============================================================================
--- hadoop/hbase/trunk/conf/hbase-default.xml (original)
+++ hadoop/hbase/trunk/conf/hbase-default.xml Sun Feb  8 18:37:00 2009
@@ -226,6 +226,13 @@
     </description>
   </property>
   <property>
+    <name>hbase.regions.percheckin</name>
+    <value>10</value>
+    <description>Maximum number of regions that can be assigned in a single go
+    to a region server.
+    </description>
+  </property>
+  <property>
     <name>hbase.server.thread.wakefrequency</name>
     <value>10000</value>
     <description>Time to sleep in between searches for work (in milliseconds).

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWrapper.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWrapper.java?rev=742137&r1=742136&r2=742137&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWrapper.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWrapper.java Sun Feb  8 18:37:00 2009
@@ -214,29 +214,38 @@
     return address;
   }
 
-  private boolean ensureZNodeExists(String path) {
+  private boolean ensureExists(final String znode) {
     try {
-      zooKeeper.create(path, new byte[0],
+      zooKeeper.create(znode, new byte[0],
                        Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
-      LOG.debug("Created ZNode " + path);
+      LOG.debug("Created ZNode " + znode);
       return true;
     } catch (KeeperException.NodeExistsException e) {
       return true;      // ok, move on.
+    } catch (KeeperException.NoNodeException e) {
+      return ensureParentExists(znode) && ensureExists(znode);
     } catch (KeeperException e) {
-      LOG.warn("Failed to create " + parentZNode + ": " + e);
+      LOG.warn("Failed to create " + znode + ":", e);
     } catch (InterruptedException e) {
-      LOG.warn("Failed to create " + parentZNode + ": " + e);
+      LOG.warn("Failed to create " + znode + ":", e);
     }
-
     return false;
   }
 
+  private boolean ensureParentExists(final String znode) {
+    int index = znode.lastIndexOf(ZNODE_PATH_SEPARATOR);
+    if (index <= 0) {   // Parent is root, which always exists.
+      return true;
+    }
+    return ensureExists(znode.substring(0, index));
+  }
+
   /**
    * Delete ZNode containing root region location.
    * @return true if operation succeeded, false otherwise.
    */
   public boolean deleteRootRegionLocation()  {
-    if (!ensureZNodeExists(parentZNode)) {
+    if (!ensureParentExists(rootRegionZNode)) {
       return false;
     }
 
@@ -297,7 +306,7 @@
       return deleteRootRegionLocation();
     }
 
-    if (!ensureZNodeExists(parentZNode)) {
+    if (!ensureParentExists(rootRegionZNode)) {
       return false;
     }
 
@@ -316,7 +325,7 @@
    * @return true if we're out of safe mode, false otherwise.
    */
   public boolean checkOutOfSafeMode() {
-    if (!ensureZNodeExists(parentZNode)) {
+    if (!ensureParentExists(outOfSafeModeZNode)) {
       return false;
     }
 
@@ -328,7 +337,7 @@
    * @return true if ephemeral ZNode created successfully, false otherwise.
    */
   public boolean writeOutOfSafeMode() {
-    if (!ensureZNodeExists(parentZNode)) {
+    if (!ensureParentExists(outOfSafeModeZNode)) {
       return false;
     }
 
@@ -353,8 +362,7 @@
    * @return true if the location was written, false if it failed
    */
   public boolean writeRSLocation(HServerInfo info) {
-    ensureZNodeExists(parentZNode);
-    ensureZNodeExists(rsZNode);
+    ensureExists(rsZNode);
     byte[] data = Bytes.toBytes(info.getServerAddress().getBindAddress());
     String znode = rsZNode + ZNODE_PATH_SEPARATOR + info.getStartCode();
     try {

Modified: hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/TestZooKeeper.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/TestZooKeeper.java?rev=742137&r1=742136&r2=742137&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/TestZooKeeper.java (original)
+++ hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/TestZooKeeper.java Sun Feb  8 18:37:00 2009
@@ -62,4 +62,13 @@
     masterRootAddress = master.getRootRegionLocation();
     assertEquals(masterRootAddress, zooKeeperRootAddress);
   }
+
+  /**
+   * @throws IOException
+   */
+  public void testParentExists() throws IOException {
+    conf.set("zookeeper.znode.safemode", "/a/b/c/d/e");
+    ZooKeeperWrapper zooKeeper = new ZooKeeperWrapper(conf);
+    assertTrue(zooKeeper.writeOutOfSafeMode());
+  }
 }