You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by en...@apache.org on 2013/02/27 01:39:41 UTC

svn commit: r1450554 - /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java

Author: enis
Date: Wed Feb 27 00:39:41 2013
New Revision: 1450554

URL: http://svn.apache.org/r1450554
Log:
HBASE-7933 NPE in TableLockManager

Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java?rev=1450554&r1=1450553&r2=1450554&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.java Wed Feb 27 00:39:41 2013
@@ -143,11 +143,6 @@ public abstract class ZKInterProcessLock
     this.fullyQualifiedZNode = ZKUtil.joinZNode(parentLockNode, childNode);
     this.metadata = metadata;
     this.handler = handler;
-    try {
-      ZKUtil.createWithParents(zkWatcher, parentLockNode);
-    } catch (KeeperException ex) {
-      LOG.warn("Failed to create znode:" + parentLockNode, ex);
-    }
   }
 
   /**
@@ -167,7 +162,12 @@ public abstract class ZKInterProcessLock
     boolean hasTimeout = timeoutMs != -1;
     long waitUntilMs =
         hasTimeout ?EnvironmentEdgeManager.currentTimeMillis() + timeoutMs : -1;
-    String createdZNode = createLockZNode();
+    String createdZNode;
+    try {
+      createdZNode = createLockZNode();
+    } catch (KeeperException ex) {
+      throw new IOException("Failed to create znode: " + fullyQualifiedZNode, ex);
+    }
     while (true) {
       List<String> children;
       try {
@@ -221,13 +221,14 @@ public abstract class ZKInterProcessLock
     return true;
   }
 
-  private String createLockZNode() {
+  private String createLockZNode() throws KeeperException {
     try {
       return ZKUtil.createNodeIfNotExistsNoWatch(zkWatcher, fullyQualifiedZNode,
           metadata, CreateMode.EPHEMERAL_SEQUENTIAL);
-    } catch (KeeperException ex) {
-      LOG.warn("Failed to create znode: " + fullyQualifiedZNode, ex);
-      return null;
+    } catch (KeeperException.NoNodeException nne) {
+      //create parents, retry
+      ZKUtil.createWithParents(zkWatcher, parentLockNode);
+      return createLockZNode();
     }
   }