Martin,
 The problem with using a thread pool is that it becomes difficult to make 
sense about order of events that occur in the system. 

Here is the snippet from ZK wiki on client guarantees:

What ZooKeeper Guarantees about Watches
With regard to watches, ZooKeeper maintains these guarantees:

        • Watches are ordered with respect to other events, other watches, and 
asynchronous replies. The ZooKeeper client libraries ensures that everything is 
dispatched in order.
        • A client will see a watch event for a znode it is watching before 
seeing the new data that corresponds to that znode.
        • The order of watch events from ZooKeeper corresponds to the order of 
the updates as seen by the ZooKeeper service.


hope that helps
mahadev

On Aug 15, 2011, at 2:15 PM, Martin Serrano wrote:

> Hi,
> 
> Has the zookeeper community considered adding an option to use a thread pool 
> executor for event dispatch?  One pattern we have developed for our library 
> is to trigger event listeners in a separate thread to guard against blocking 
> operations in listeners.  A blocking watcher will prevent new events/watchers 
> from being triggered.  By adding the ability to configure which Executor was 
> used by a zookeeper client for event delivery library writers could make the 
> choice that is best for them.  Being able to do this at the client level 
> (rather than for each individual watcher class I implement) is a cleaner 
> approach IMO.
> 
> Thoughts?
> 
> -Martin

Reply via email to