hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-10448) ZKUtil create and watch methods don't set watch in some cases
Date Sun, 02 Feb 2014 09:10:10 GMT

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

Hudson commented on HBASE-10448:
--------------------------------

SUCCESS: Integrated in hbase-0.96 #276 (See [https://builds.apache.org/job/hbase-0.96/276/])
HBASE-10448 ZKUtil create and watch methods don't set watch in some cases (stack: rev 1563567)
* /hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java


> ZKUtil create and watch methods don't set watch in some cases
> -------------------------------------------------------------
>
>                 Key: HBASE-10448
>                 URL: https://issues.apache.org/jira/browse/HBASE-10448
>             Project: HBase
>          Issue Type: Bug
>          Components: Zookeeper
>    Affects Versions: 0.96.0, 0.96.1.1
>            Reporter: Jerry He
>            Assignee: Jerry He
>             Fix For: 0.98.0, 0.96.2, 0.99.0
>
>         Attachments: HBASE-10448-trunk.patch
>
>
> While using the ZKUtil methods during testing, I found that watch was not set when it
should be set based on the methods and method comments:
> createNodeIfNotExistsAndWatch
> createEphemeralNodeAndWatch
> For example, in createNodeIfNotExistsAndWatch():
> {code}
>  public static boolean createNodeIfNotExistsAndWatch(
>       ZooKeeperWatcher zkw, String znode, byte [] data)
>   throws KeeperException {
>     try {
>       zkw.getRecoverableZooKeeper().create(znode, data, createACL(zkw, znode),
>           CreateMode.PERSISTENT);
>     } catch (KeeperException.NodeExistsException nee) {
>       try {
>         zkw.getRecoverableZooKeeper().exists(znode, zkw);
>       } catch (InterruptedException e) {
>         zkw.interruptedException(e);
>         return false;
>       }
>       return false;
>     } catch (InterruptedException e) {
>       zkw.interruptedException(e);
>       return false;
>     }
>     return true;
>   }
> {code}
> The watch is only set via exists() call when the node already exists.
> Similarly in createEphemeralNodeAndWatch():
> {code}
>   public static boolean createEphemeralNodeAndWatch(ZooKeeperWatcher zkw,
>       String znode, byte [] data)
>   throws KeeperException {
>     try {
>       zkw.getRecoverableZooKeeper().create(znode, data, createACL(zkw, znode),
>           CreateMode.EPHEMERAL);
>     } catch (KeeperException.NodeExistsException nee) {
>       if(!watchAndCheckExists(zkw, znode)) {
>         // It did exist but now it doesn't, try again
>         return createEphemeralNodeAndWatch(zkw, znode, data);
>       }
>       return false;
>     } catch (InterruptedException e) {
>       LOG.info("Interrupted", e);
>       Thread.currentThread().interrupt();
>     }
>     return true;
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Mime
View raw message