hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jerry He (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-11018) ZKUtil.getChildDataAndWatchForNewChildren() will not return null as indicated
Date Thu, 17 Apr 2014 20:49:16 GMT

     [ https://issues.apache.org/jira/browse/HBASE-11018?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jerry He updated HBASE-11018:
-----------------------------

    Fix Version/s: 0.99.0
           Status: Patch Available  (was: Open)

> ZKUtil.getChildDataAndWatchForNewChildren() will not return null as indicated
> -----------------------------------------------------------------------------
>
>                 Key: HBASE-11018
>                 URL: https://issues.apache.org/jira/browse/HBASE-11018
>             Project: HBase
>          Issue Type: Bug
>          Components: Zookeeper
>    Affects Versions: 0.98.1, 0.96.1
>            Reporter: Jerry He
>            Assignee: Jerry He
>            Priority: Minor
>             Fix For: 0.99.0
>
>         Attachments: HBASE-11018-trunk.patch
>
>
> While working on HBase acl, I found out that ZKUtil.getChildDataAndWatchForNewChildren()
will not return null as indicated.  Here is the code:
> {code}
>  /**
>   ....
>    * Returns null if the specified node does not exist.  Otherwise returns a
>    * list of children of the specified node.  If the node exists but it has no
>    * children, an empty list will be returned.
>   ....
>    */
>   public static List<NodeAndData> getChildDataAndWatchForNewChildren(
>       ZooKeeperWatcher zkw, String baseNode) throws KeeperException {
>     List<String> nodes =
>       ZKUtil.listChildrenAndWatchForNewChildren(zkw, baseNode);
>     List<NodeAndData> newNodes = new ArrayList<NodeAndData>();
>     if (nodes != null) {
>       for (String node : nodes) {
>         String nodePath = ZKUtil.joinZNode(baseNode, node);
>         byte[] data = ZKUtil.getDataAndWatch(zkw, nodePath);
>         newNodes.add(new NodeAndData(nodePath, data));
>       }
>     }
>     return newNodes;
>   }
> {code}
> We return 'newNodes' which will never be null.
> This is a deprecated method.  But it is still used in HBase code.
> For example: org.apache.hadoop.hbase.security.access.ZKPermissionWatcher.start()
> {code}
>   public void start() throws KeeperException {
>     watcher.registerListener(this);
>     if (ZKUtil.watchAndCheckExists(watcher, aclZNode)) {
>       List<ZKUtil.NodeAndData> existing =
>           ZKUtil.getChildDataAndWatchForNewChildren(watcher, aclZNode);
>       if (existing != null) {
>         refreshNodes(existing);
>       }
>     }
>   }
> {code}
> We test the 'null' return from the call which becomes the problem.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message