[
https://issues.apache.org/jira/browse/ZOOKEEPER-961?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13105537#comment-13105537
]
Camille Fournier commented on ZOOKEEPER-961:
--------------------------------------------
It's not a no-op change. In the original code, we check connected, check the
closing flag, then wait in the startConnect loop. In the changed version, we
check connected, wait, then check closing, then start connect. There's a
meaningful difference in checking closing before we do the wait and attempted
connection logic, and waiting, then checking close, then trying to connect.
So, if we want to wait and then check the close before trying to connect, vs
the original way, we can do that, but let's make it a conscious decision rather
than something that actually got pulled in.
The second part of the change is actually more of a no-op because I'm pretty
sure you can't change the state anywhere but the send thread, so checking it
after a sleep on that thread is pointless.
> Watch recovery after disconnection when connection string contains a prefix
> ---------------------------------------------------------------------------
>
> Key: ZOOKEEPER-961
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-961
> Project: ZooKeeper
> Issue Type: Bug
> Components: java client
> Affects Versions: 3.3.1
> Environment: Windows 32 bits
> Reporter: pmpm47
> Assignee: Matthias Spycher
> Priority: Critical
> Fix For: 3.3.4, 3.4.0
>
> Attachments: ZOOKEEPER-961.patch, ZOOKEEPER-961.patch,
> ZOOKEEPER-961.patch, ZOOKEEPER-961b.patch, ZOOKEEPER-961b.patch
>
>
> Let's say you're using connection string "127.0.0.1:2182/foo".
> 1) put a childrenchanged watch on relative / (that is, on absolute path /foo)
> 2) stop the zk server
> 3) start the zk server
> 4) at this point, the client recovers the connection, and should have put
> back a watch on relative path /, but instead the client puts a watch on the
> *absolute* path /
> - if some other client adds or removes a node under /foo, nothing will happen
> - if some other client adds or removes a node under /, then you will get an
> error from the zk client library (string operation error)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira