You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2012/04/12 23:54:03 UTC
svn commit: r1325541 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
test/java/org/apache/hadoop/hbase/TestZooKeeper.java
Author: larsh
Date: Thu Apr 12 21:54:02 2012
New Revision: 1325541
URL: http://svn.apache.org/viewvc?rev=1325541&view=rev
Log:
HBASE-5775 ZKUtil doesn't handle deleteRecurisively cleanly (Jesse Yates)
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java?rev=1325541&r1=1325540&r2=1325541&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java Thu Apr 12 21:54:02 2012
@@ -991,14 +991,19 @@ public class ZKUtil {
/**
* Delete the specified node and all of it's children.
- *
- * Sets no watches. Throws all exceptions besides dealing with deletion of
+ * <p>
+ * If the node does not exist, just returns.
+ * <p>
+ * Sets no watches. Throws all exceptions besides dealing with deletion of
* children.
*/
public static void deleteNodeRecursively(ZooKeeperWatcher zkw, String node)
throws KeeperException {
try {
List<String> children = ZKUtil.listChildrenNoWatch(zkw, node);
+ // the node is already deleted, so we just finish
+ if (children == null) return;
+
if(!children.isEmpty()) {
for(String child : children) {
deleteNodeRecursively(zkw, joinZNode(node, child));
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java?rev=1325541&r1=1325540&r2=1325541&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java Thu Apr 12 21:54:02 2012
@@ -223,7 +223,12 @@ public class TestZooKeeper {
assertNotNull(ZKUtil.getDataNoWatch(zkw, "/l1/l2/l3/l4", null));
}
ZKUtil.deleteNodeRecursively(zkw, "/l1/l2");
+ // make sure it really is deleted
assertNull(ZKUtil.getDataNoWatch(zkw, "/l1/l2/l3/l4", null));
+
+ // do the same delete again and make sure it doesn't crash
+ ZKUtil.deleteNodeRecursively(zkw, "/l1/l2");
+
ZKUtil.deleteNode(zkw, "/l1");
assertNull(ZKUtil.getDataNoWatch(zkw, "/l1/l2", null));
}