[jira] [Updated] (HBASE-10448) ZKUtil create and watch methods don't set watch in some cases

2014-02-02 Thread Lars Hofhansl (JIRA)

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

Lars Hofhansl updated HBASE-10448:
--

Fix Version/s: 0.94.17

> 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, 0.94.17
>
> 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)


[jira] [Updated] (HBASE-10448) ZKUtil create and watch methods don't set watch in some cases

2014-02-01 Thread stack (JIRA)

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

stack updated HBASE-10448:
--

Fix Version/s: 0.96.2

Good one [~jerryhe]  Committed to 0.96 branch.

> 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)


[jira] [Updated] (HBASE-10448) ZKUtil create and watch methods don't set watch in some cases

2014-02-01 Thread Ted Yu (JIRA)

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

Ted Yu updated HBASE-10448:
---

Status: Open  (was: Patch Available)

> 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.1.1, 0.96.0
>Reporter: Jerry He
> Fix For: 0.98.0, 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)


[jira] [Updated] (HBASE-10448) ZKUtil create and watch methods don't set watch in some cases

2014-02-01 Thread Andrew Purtell (JIRA)

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

Andrew Purtell updated HBASE-10448:
---

Fix Version/s: (was: 0.98.1)
   0.99.0
   0.98.0

bq. A guess is that they don't really depend on the watches being set in the 
cases that the watches are not set.

You are right, I don't follow how these *AndWatch methods lived up to the 
expectations of their naming.

+1

> 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
> Fix For: 0.98.0, 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)


[jira] [Updated] (HBASE-10448) ZKUtil create and watch methods don't set watch in some cases

2014-01-31 Thread Jerry He (JIRA)

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

Jerry He updated HBASE-10448:
-

Status: Patch Available  (was: Open)

> 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.1.1, 0.96.0
>Reporter: Jerry He
> Fix For: 0.98.1
>
> 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)


[jira] [Updated] (HBASE-10448) ZKUtil create and watch methods don't set watch in some cases

2014-01-31 Thread Jerry He (JIRA)

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

Jerry He updated HBASE-10448:
-

Attachment: HBASE-10448-trunk.patch

> 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
> Fix For: 0.98.1
>
> 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)