Could we overload the getHelixPropertyStore() to an alternative that takes
these paths as argument? That way if I know beforehand the paths I'll need
I can still use this useful api rather than having to deal with lower level
objects (IZK*Listeners or ZkClient).




On Mon, Aug 5, 2013 at 3:10 PM, Zhen Zhang <[email protected]> wrote:

> Hi Santi, it's intended. The HelixPropertyListener used in
> HelixPropertyStore#subscribe() provides callbacks on data
> change/delete/create. This is based on a ZkCache built inside. The ZkCache
> requires these paths to be initially setup instead of changing dynamically.
> Note that the callback provided by HelixPropertyListener is different from
> those by ZkClient, since it's invoked on every descendant and distinguishes
> between different changes, i.e. when znode is deleted/created. We also
> expose the original ZkClient callbacks:
> subscribeDataChanges(String path, IZkDataListener listener)
> subscribeChildChanges(String path, IZkChildListener listener)
>
> This doesn't have the limitation of registering paths in constructor, but
> they work only on children znodes and you need to figure out znode
> delete/create by child change callbacks.
>
> I agree that subscribe api should fail when it's not going to work.
>
>
>
>
>
> On Mon, Aug 5, 2013 at 10:40 AM, Santiago Perez <[email protected]
> >wrote:
>
> > I see. Is this intended this way or is it a bug? At the very least I
> would
> > expect the subscribe api to fail if it is not really going to work.
> >
> > Also it would be great if I didn't have to construct my own based on a
> > ZkClient.
> >
> > Are there other alternatives for listening to property store changes that
> > can be solved directly from the HelixManager?
> >
> >
> > On Mon, Aug 5, 2013 at 2:25 PM, Zhen Zhang <[email protected]> wrote:
> >
> > > Hi Santi, you are right. The property store obtained from HelixManager
> is
> > > not registering with any paths. You should construct your own property
> > > store.
> > >
> > >
> > > On Mon, Aug 5, 2013 at 9:57 AM, Santiago Perez <[email protected]>
> > > wrote:
> > >
> > > > I'm not following. When calling subscribe I'm providing relative
> path,
> > > the
> > > > problem is that the store obtained from the HelixManager is not
> > listening
> > > > to subscribed to anything and never will be.
> > > >
> > > >
> > > > On Mon, Aug 5, 2013 at 1:54 PM, kishore g <[email protected]>
> wrote:
> > > >
> > > > > You should probably provide only relative path, not absolute. If
> > thats
> > > > not
> > > > > the case, we should fix it.
> > > > >
> > > > >
> > > > > On Mon, Aug 5, 2013 at 9:51 AM, Santiago Perez <
> [email protected]
> > >
> > > > > wrote:
> > > > >
> > > > > > I see, but I'm obtaining the property store via the HelixManager.
> > > > Should
> > > > > I
> > > > > > be constructing it myself?
> > > > > >
> > > > > >
> > > > > > On Mon, Aug 5, 2013 at 1:43 PM, Zhen Zhang <[email protected]>
> > > > wrote:
> > > > > >
> > > > > > > yes. you need to construct with a list of paths. subscribe ()
> > works
> > > > > with
> > > > > > > any sub paths of the constructed paths.
> > > > > > > On Aug 5, 2013 9:34 AM, "Santiago Perez" <[email protected]
> >
> > > > wrote:
> > > > > > >
> > > > > > > > Hey guys,
> > > > > > > >
> > > > > > > > I'm trying to rely on ZkHelixPropertyStore.subscribe(String,
> > > > > > > > HelixPropertyListener) to listen for changes to certain paths
> > in
> > > > the
> > > > > > > > property store but I'm never getting any callbacks.
> > > > > > > >
> > > > > > > > Looking into the code I noticed that
> > > > > > HelixManager.getHelixPropertyStore()
> > > > > > > > is creating a ZkHelixPropertyStore with null in the
> > > subscribedPaths
> > > > > > > > argument. This prevents the event thread from being started
> and
> > > in
> > > > > fact
> > > > > > > the
> > > > > > > > log confirms that with line:
> > > > > > > > "ZkCachePaths is null or empty. Will not start
> > > ZkCacheEventThread"
> > > > > > > >
> > > > > > > > So everything seems to indicate that this is the cause why I
> > will
> > > > > never
> > > > > > > get
> > > > > > > > a callback on property store changes.
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Santiago
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to