Hi I can see some people might be assigning for example anonymous class
instances as watchers/handlers, and not keeping any references to them.

To avoid breaking existing use cases, two options:

1/ Add a useWeakReferences parameter to new constructor (sets default
behaviour)

2/ Add alternative methods, which take useWeakWatcherRef boolean.

Internally will be trivial to have both

private final Map<String, Set<Watcher>> dataWatches =
            new HashMap<String, Set<Watcher>>();

private final Map<String, WeakSet<Watcher>> dataWatchesWeak =
            new HashMap<String, WeakSet<Watcher>>();

On 18 March 2010 22:47, Ted Dunning <ted.dunn...@gmail.com> wrote:

> This kind of sounds strange to me.
>
> My typical idiom is to create a watcher but not retain any references to it
> outside the client.  It sounds to me like your change will cause my
> watchers
> to be collected and deactivated when GC happens.
>
> On Thu, Mar 18, 2010 at 3:32 AM, Dominic Williams <
> thedwilli...@googlemail.com> wrote:
>
> >
> > The current ZooKeeper client holds strong references to Watcher objects.
> I
> > want to change the client so it only holds weak references. Feedback
> > please.
>

Reply via email to