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

Prathyusha commented on HBASE-24972:
------------------------------------

Yes, ConnectionLoss is what we get when we try to use a not-yet-connected zk.

[ReadOnlyZKClient|https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.java]
 of hbase client uses [async 
apis|https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.java#L263]
 of Zookeeper and works with callbacks. So this does not need to wait 
explicitly for connection creation and is handled by the async setup of 
connection of Zookeeper.

[RecoverableZooKeeper|https://github.com/apache/hbase/blob/master/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java]
 on the other hand uses [sync 
apis|https://github.com/apache/hbase/blob/master/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java#L323]
 to fetch data from zookeeper and has to wait till the connection is created. 
It does so with an [exponential 
retry|https://github.com/apache/hbase/blob/master/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java#L319]
 if the zk conn is not yet up and 
[throws|https://github.com/apache/hbase/blob/master/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java#L331]
 a ConnectionLoss exception once the retries are exhausted. This client is used 
by region servers. Thanks.

 

> Wait for connection attempt to succeed before performing operations on ZK
> -------------------------------------------------------------------------
>
>                 Key: HBASE-24972
>                 URL: https://issues.apache.org/jira/browse/HBASE-24972
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Sandeep Guggilam
>            Assignee: Prathyusha
>            Priority: Minor
>
> {color:#1d1c1d}Creating the connection with ZK  is asynchronous and notified 
> via the passed in watcher about the  successful connection event. When we 
> attempt any operations, we try to create a connection and then perform a 
> read/write 
> ({color}{color:#1d1c1d}[https://github.com/apache/hbase/blob/979edfe72046b2075adcc869c65ae820e6f3ec2d/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java#L323]{color}{color:#1d1c1d})
>  without really waiting for the notification event 
> ([https://github.com/apache/hbase/blob/979edfe72046b2075adcc869c65ae820e6f3ec2d/hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKWatcher.java#L582)]{color}
>  
> {color:#1d1c1d}It is possible we get ConnectionLoss errors when we perform 
> operations on ZK without waiting for the connection attempt to succeed{color}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to