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

Aaron Lei commented on HBASE-8937:
----------------------------------

I also wonder how it works without registering a watcher when create master 
znode.

Is this code:
byte [] bytes = ZKUtil.getDataAndWatch(this.watcher, 
this.watcher.masterAddressZNode);
that makes it work well?

> createEphemeralNodeAndWatch don't set watcher if the node is created 
> successfully
> ---------------------------------------------------------------------------------
>
>                 Key: HBASE-8937
>                 URL: https://issues.apache.org/jira/browse/HBASE-8937
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>            Reporter: Liu Shaohui
>            Priority: Minor
>              Labels: master, wacter
>
> CreateEphemeralNodeAndWatch in zkUtil don't set watcher if the node is 
> created successfully. This is not consistent with the comment and may causes 
> the ActiveMasterManager cannot get events that master node is deleted or 
> changed.
> {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#6144)

Reply via email to