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

Rakesh R commented on ZOOKEEPER-2375:
-------------------------------------

Good catch [~yuemeng]. Patch looks good, just few comments. I'll be +1 after 
addressing these two.
# Since we made the logic using synchronized block we don't need another 
synchronization at {{synchronized private SaslClient createSaslClient}} method 
level. Could you please remove this.
# Also, it would be great if you could correct the java comment.
{code}
 // note that the login object is static: it's shared amongst all 
zookeeper-related connections.
 // createSaslClient() must be declared synchronized so that login is 
initialized only once.
{code}

> The synchronize method of createSaslClient in ZooKeeperSaslClient can't be 
> synchronize
> --------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-2375
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2375
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: java client
>    Affects Versions: 3.4.6, 3.4.8, 3.5.0, 3.5.1
>            Reporter: yuemeng
>            Priority: Blocker
>             Fix For: 3.5.2
>
>         Attachments: ZOOKEEPER-2375.patch, ZOOKEEPER-2375_01.patch
>
>
> If there are exist many ZooKeeperSaslClient instance in one process,each 
> ZooKeeperSaslClient instance will be call synchronize method( 
> createSaslClient),But each ZooKeeperSaslClient instance will be lock the 
> current object(that is say ,the synchronize only for lock it's own object) 
> ,but many instances can access the static variable login,the synchronize 
> can't prevent other threads access the static login object,it will be cause 
> more than one ZooKeeperSaslClient  instances use the same login object,and 
> login.startThreadIfNeeded() will be called more than one times for same login 
> object。
> it wll cause problem:
>  ERROR | [Executor task launch worker-1-SendThread(fi1:24002)] | Exception 
> while trying to create SASL client: java.lang.IllegalThreadStateException | 
> org.apache.zookeeper.client.ZooKeeperSaslClient.createSaslClient(ZooKeeperSaslClient.java:305)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to