You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "yuemeng (JIRA)" <ji...@apache.org> on 2016/02/25 10:19:18 UTC

[jira] [Created] (ZOOKEEPER-2375) The synchronize method of createSaslClient in ZooKeeperSaslClient can't be synchronize

yuemeng created ZOOKEEPER-2375:
----------------------------------

             Summary: 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.5.1, 3.5.0, 3.4.8, 3.4.6
            Reporter: yuemeng
             Fix For: 3.5.2


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