You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Yip Ng (JIRA)" <ji...@apache.org> on 2014/10/02 09:18:33 UTC

[jira] [Commented] (ZOOKEEPER-2052) Unable to delete a node when the node has no children

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-2052?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14156163#comment-14156163 ] 

Yip Ng commented on ZOOKEEPER-2052:
-----------------------------------

This issue looks very similar to https://issues.apache.org/jira/browse/ZOOKEEPER-1424 
where it was reported on ZooKeeper v3.4.2

> Unable to delete a node when the node has no children
> -----------------------------------------------------
>
>                 Key: ZOOKEEPER-2052
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2052
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.4.6
>         Environment: Red Hat Enterprise Linux 6.1 x86_64, standalone or 3 node ensemble (v3.4.6), 2 Java clients (v3.4.6)
>            Reporter: Yip Ng
>         Attachments: zookeeper.log
>
>
> We stumbled upon a ZooKeeper bug where a node with no children cannot be removed on our 3 node ZooKeeper ensemble or standalone ZooKeeper on Red Hat Enterprise Linux x86_64 environment.  Here is an example scenario/setup:
> o Standalone ZooKeeper or 3 node ensemble (v3.4.6)
> o 2 Java clients (v3.4.6)
>   - Client A creates a persistent node (e.g.:  /metadata/resources)
>   - Client B creates ephemeral nodes under this persistent node 
> o Client A attempts to remove the /metadata/resources node via multi op  
>    delete but fails since there are children
> o Client B's session expired, all the ephemeral nodes are removed
> o Client A attempts to recursively remove /metadata/resources node via 
>    multi op, this is expected to succeed but got the following exception:
>       org.apache.zookeeper.KeeperException$NotEmptyException:     
>          KeeperErrorCode = Directory not empty
>    (Note that Client B is the only client that creates these ephemeral nodes)
> o After this, we use zkCli.sh to inspect the problematic node but the zkCli.sh shows the /metadata/resources node indeed have no children but it will not allow /metadata/resources node to get deleted.  (shown below)
> [zk: localhost:2181(CONNECTED) 0] ls /
> [zookeeper, metadata]
> [zk: localhost:2181(CONNECTED) 1] ls /metadata
> [resources]
> [zk: localhost:2181(CONNECTED) 2] get /metadata/resources
> null
> cZxid = 0x3
> ctime = Wed Oct 01 22:04:11 PDT 2014
> mZxid = 0x3
> mtime = Wed Oct 01 22:04:11 PDT 2014
> pZxid = 0x9
> cversion = 2
> dataVersion = 0
> aclVersion = 0
> ephemeralOwner = 0x0
> dataLength = 0
> numChildren = 0
> [zk: localhost:2181(CONNECTED) 3] delete /metadata/resources
> Node not empty: /metadata/resources
> [zk: localhost:2181(CONNECTED) 4] get /metadata/resources   
> null
> cZxid = 0x3
> ctime = Wed Oct 01 22:04:11 PDT 2014
> mZxid = 0x3
> mtime = Wed Oct 01 22:04:11 PDT 2014
> pZxid = 0x9
> cversion = 2
> dataVersion = 0
> aclVersion = 0
> ephemeralOwner = 0x0
> dataLength = 0
> numChildren = 0
> o The only ways to remove this node is to either:
>    a) Restart the ZooKeeper server
>    b) set data to /metadata/resources then followed by a subsequent delete.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)