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

Rakesh R commented on HBASE-7847:
---------------------------------

Hi [~stack]

{quote}
Any chance of your trying multi ON against a zk ensemble that does not support 
multi (after changing it so the default is that we fall back to one-by-one if 
multi is not availble) to make sure all still works and you don't get an 
exception you were not expecting? 
{quote}
Say, if user tries to perform multi api 'hbase.zookeeper.useMulti=true' with 
older ZK version 3.3, looks like zkclient will get hanged. Kindly look at the 
issue ZOOKEEPER-1495 for more information, this issue is resolved only on 3.4 
branch.

Secondly, the new proposed api internally uses the existing 
ZKUtil#multiOrSequential() api to perform the delete operation. Here in 
ZKUtil#multiOrSequential() I could see, it would retry with sequential 
execution if any of the following exception occured. Other than these it will 
throw out the exception to the user.
- NODEEXISTS
- NONODE
- BADVERSION
- NOAUTH

In javadoc, I had mentioned the following exceptions:
{code}
   * @throws KeeperException.NotEmptyException if node has children while 
deleting
   * @throws KeeperException if unexpected ZooKeeper exception
{code}

Ah, I missed one case, IllegalArgumentException - if an invalid path is 
specified. I'll include this too in javadoc section.

Does this sound good to you ?

> Use zookeeper multi to clear znodes
> -----------------------------------
>
>                 Key: HBASE-7847
>                 URL: https://issues.apache.org/jira/browse/HBASE-7847
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Ted Yu
>            Assignee: Rakesh R
>         Attachments: 7847-v1.txt, 7847_v6.patch, 7847_v6.patch, 
> HBASE-7847.patch, HBASE-7847.patch, HBASE-7847.patch, HBASE-7847_v4.patch, 
> HBASE-7847_v5.patch, HBASE-7847_v6.patch
>
>
> In ZKProcedureUtil, clearChildZNodes() and clearZNodes(String procedureName) 
> should utilize zookeeper multi so that they're atomic



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

Reply via email to