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