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

Rakesh R commented on ZOOKEEPER-1909:
-------------------------------------

Thanks [~rgs], very nice test case:)

I've few more comments, sorry I failed to add few cases previously. Please see:

# Add path to the exception message, it would be helpful.
{code}
        throw new KeeperException.NoWatcherException();
{code}
# 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 ? 
{code}
         HashSet<Watcher> list = watchTable.get(path);
         // ...
         list.remove(watcher);
{code}
# Also, in tests, can we catch specific exception 
KeeperException.NoWatcherException. 
{code}
+        try {
+            zk.removeWatches("/nowatchhere", null, WatcherType.Data, false);
+        } catch (KeeperException nwe) {
+            nw = true;
+        }
{code}


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

Reply via email to