[
https://issues.apache.org/jira/browse/ZOOKEEPER-1909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13966793#comment-13966793
]
Raul Gutierrez Segales commented on ZOOKEEPER-1909:
---------------------------------------------------
Thanks for the review [~rakeshr], agreed on point 1 & 3. Though wrt #2:
bq. Consider a case where multiple clients added their watcher on same znode
path. Now "list" will not be null, and I think, we need to see whether my
"watcher" exists on the list. If not again throw exception no ?
{noformat}
HashSet<Watcher> list = watchTable.get(path);
// ...
list.remove(watcher);
{noformat}
I agree, but not only that - we should do the same check for paths (the prev
HashSet). Updating the patch.
> removeWatches doesn't return NOWATCHER when there is no watch set
> -----------------------------------------------------------------
>
> Key: ZOOKEEPER-1909
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1909
> Project: ZooKeeper
> Issue Type: Bug
> Components: server
> Affects Versions: 3.5.0
> Reporter: Raul Gutierrez Segales
> Fix For: 3.5.0
>
> Attachments: ZOOKEEPER-1909.patch, ZOOKEEPER-1909.patch
>
>
> ZOOKEEPER-442 introduced support for a new opcode: removeWatches. The way it
> was implemented though, implies that you need to check on the client side if
> a watch/watcher is set *before* you send your request to the server. If you
> don't, ZK will just swallow your request and won't return an error code if
> there isn't a watch set for that path.
> I noticed this whilst implementing removeWatches for Kazoo [1]. As mentioned,
> I guess it could be expected that clients should do the check on their side
> but I think that the correct thing would to have the server do the validation
> and return the error code accordingly as well.
> [~rakeshr], [~phunt]: thoughts?
> [1]
> https://github.com/rgs1/kazoo/commit/44ca48e975aeea3fd0664fe13136a72caf89e54f
--
This message was sent by Atlassian JIRA
(v6.2#6252)