From: Patrick H. <ph...@gm...> - 2008-04-25 07:14:23
|
Benjamin Reed wrote: > This is really a key point for new users to understand, so any pointers on how we can clarify that page would be very helpful! Part of the issue may be the naming itself. For whatever reason I associate "watch" with something long lived - not a "one time notification" which I would associate more naturally with "trigger". I jumped in right way and started using the java client/server. The java client javadoc in particular is not clear about watches being "one time notifications". Would def help to fix the javadoc on this point. Patrick > ----- Original Message ---- > From: Stefan Groschupf <sg...@10...> > To: zoo...@li... > Sent: Thursday, April 24, 2008 10:19:16 PM > Subject: [Zookeeper-user] [Bug?] Notification not guaranteed > > Hi there, > as far I understand notification is guaranteed for e.g. child creation. > However I have a test that shows that randomly I do not get all > notification I do expect. > I basically create 10 child in /folder but only get 8 or 9 > notifications back. > However in case I add a Thread.sleep(50); between my child znode > creation I always get 10 notifications. > > Is that a bug or an optimization, e.g. getting one notification for > two new sub znode creations? > Thanks for any hints. > Stefan > > My code looks like this: > > TestMethod: > > public void testNotifications() throws Exception { > KattaConfiguration conf = new KattaConfiguration(); > Server server = new Server(conf); > ZKClient client = new ZKClient(conf); > MyListener listener = new MyListener(); > String katta = "/katta"; > if (client.exists(katta)) { > client.deleteRecursiv(katta); > } > client.create(katta); > client.subscribeChildChanges(katta, listener); > for (int i = 0; i < 10; i++) { > client.create(katta + "/" + i); > // Thread.sleep(50); > } > Thread.sleep(1000); > assertEquals(10, listener._counter); > server.shutdown(); > } > > Watcher process Method: > > public void process(WatcherEvent event) { > synchronized (_mutex) { > String path = event.getPath(); > if (event.getType() == > Watcher.Event.EventNodeChildrenChanged) { > HashSet<IZKEventListener> listeners = > _childListener.get(path); > if (listeners != null) { > for (IZKEventListener listener : listeners) { > listener.process(event); > } > // re subscribe to event. > try { > _zk.getChildren(event.getPath(), true); > } catch (Exception e) { > for (IZKEventListener listener : listeners) { > removeListener(path, listener); > } > Logger.warn("unable to re subscribe to child > change notification", e); > } > } > } > } > } > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 101tec Inc. > Menlo Park, California, USA > http://www.101tec.com > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference > Don't miss this year's exciting event. There's still time to save $100. > Use priority code J8TL2D2. > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone > _______________________________________________ > Zookeeper-user mailing list > Zoo...@li... > https://lists.sourceforge.net/lists/listinfo/zookeeper-user > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference > Don't miss this year's exciting event. There's still time to save $100. > Use priority code J8TL2D2. > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone > _______________________________________________ > Zookeeper-user mailing list > Zoo...@li... > https://lists.sourceforge.net/lists/listinfo/zookeeper-user |