i did try adding a sleep and got the same result
cache.start();
Thread.sleep(5000);
list(cache);
I am using curator libraries version 2.10 and zookeeper version 3..4.6
On Wed, Mar 9, 2016 at 2:19 PM, Cameron McKenzie <[email protected]>
wrote:
> I think that you have a race condition between calling start() on your
> cache and calling list(). Calling list() just checks the current state of
> the cache. If it hasn't communicated with ZK yet, it won't have any data.
> Try putting in a sleep after the cache.start() call, before you call list().
>
> On Thu, Mar 10, 2016 at 9:16 AM, s influxdb <[email protected]> wrote:
>
>> sure
>>
>> main class
>> RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
>> client = CuratorFrameworkFactory.newClient("10.x.x.x",
>> retryPolicy);
>> client.start();
>> SyncData sd = new SyncData(client);
>> sd.run();
>>
>> the class that calls cache
>>
>> private static final String PATH = "/zktest";
>>
>> public void run () throws Exception
>> {
>> try {
>>
>> cache = new PathChildrenCache(client, PATH, true);
>> cache.start();
>>
>> list(cache);
>>
>>
>> for(;;) {
>> try {
>> Thread.sleep(50000);
>> } catch(InterruptedException e) {
>> }
>> }
>>
>> }
>> finally {
>> CloseableUtils.closeQuietly(cache);
>> }
>> }
>>
>> On Wed, Mar 9, 2016 at 1:30 PM, Cameron McKenzie <[email protected]>
>> wrote:
>>
>>> I just tried running the example and it seems to work fine for me. I
>>> assume that you modified the code in some way for it to run against a
>>> proper ZK instance? Can you post it somewhere?
>>>
>>> On Thu, Mar 10, 2016 at 5:53 AM, s influxdb <[email protected]>
>>> wrote:
>>>
>>>>
>>>> ---------- Forwarded message ----------
>>>> From: s influxdb <[email protected]>
>>>> Date: Wed, Mar 9, 2016 at 10:36 AM
>>>> Subject: Re: curator pathcache
>>>> To: Jordan Zimmerman <[email protected]>
>>>> Cc: [email protected]
>>>>
>>>>
>>>> Sorry for posting this in a wrong forum the first time.
>>>>
>>>> I recreated a new project and was running the example code here for
>>>> cache : http://curator.apache.org/curator-examples/index.html
>>>>
>>>>
>>>> Today when i try to replicathe NPE i am unable to do that .
>>>> However when i call the list(cache) it prints the size of the data in
>>>> the node as 0. This works with NodeCache
>>>>
>>>> Curator libraries are 2.10 and zookeeper version 3.4.6.
>>>>
>>>> Ideally i would like to use TreeCache but it gave me NPE too. My use
>>>> case is setting a watch on the entire znode in the cluster and be notified
>>>> about it. Thanks for replying to the mail.
>>>>
>>>> private static void list(PathChildrenCache cache)
>>>> {
>>>> if ( cache.getCurrentData().size() == 0 )
>>>> {
>>>> System.out.println("* empty *");
>>>> }
>>>> else
>>>> {
>>>> for ( ChildData data : cache.getCurrentData() )
>>>> {
>>>> System.out.println(data.getPath() + " = " + new
>>>> String(data.getData()));
>>>> }
>>>> }
>>>> }
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Mar 9, 2016 at 9:44 AM, Jordan Zimmerman <
>>>> [email protected]> wrote:
>>>>
>>>>> Moving this to Curator’s list…
>>>>>
>>>>> Where do you get the NPE? Please send the stacktrace.
>>>>>
>>>>> -Jordan
>>>>>
>>>>> > On Mar 8, 2016, at 8:27 PM, s influxdb <[email protected]>
>>>>> wrote:
>>>>> >
>>>>> > I am trying to run the path cahce and keep java NPE
>>>>> >
>>>>> > Running curator 2.9.0 libraries against a zookeeper 3.4.6 cluster
>>>>> > Even
>>>>> >
>>>>> > The samples are taken from the curator examples .
>>>>> >
>>>>> >
>>>>> >
>>>>> > public void run () throws Exception
>>>>> > {
>>>>> > try {
>>>>> >
>>>>> > pcache = new PathChildrenCache(client, PATH, true);
>>>>> > pcache.start();
>>>>> >
>>>>> > addListener(cache);
>>>>> >
>>>>> > // list(pcache);
>>>>> >
>>>>> > pcache.close();
>>>>> > }
>>>>> > finally {
>>>>> > CloseableUtils.closeQuietly(cache);
>>>>> > }
>>>>> > }
>>>>> >
>>>>> >
>>>>> > private static void addListener(PathChildrenCache cache)
>>>>> > {
>>>>> > // a PathChildrenCacheListener is optional. Here, it's used
>>>>> just
>>>>> > to log changes
>>>>> > PathChildrenCacheListener listener = new
>>>>> > PathChildrenCacheListener()
>>>>> > {
>>>>> > @Override
>>>>> > public void childEvent(CuratorFramework client,
>>>>> > PathChildrenCacheEvent event) throws Exception
>>>>> > {
>>>>> > switch ( event.getType() )
>>>>> > {
>>>>> > case CHILD_ADDED:
>>>>> > {
>>>>> > System.out.println("Node added: " +
>>>>> > ZKPaths.getNodeFromPath(event.getData().getPath()));
>>>>> > break;
>>>>> > }
>>>>> >
>>>>> > case CHILD_UPDATED:
>>>>> > {
>>>>> > System.out.println("Node changed: " +
>>>>> > ZKPaths.getNodeFromPath(event.getData().getPath()));
>>>>> > break;
>>>>> > }
>>>>> >
>>>>> > case CHILD_REMOVED:
>>>>> > {
>>>>> > System.out.println("Node removed: " +
>>>>> > ZKPaths.getNodeFromPath(event.getData().getPath()));
>>>>> > break;
>>>>> > }
>>>>> > }
>>>>> > }
>>>>> > };
>>>>> > cache.getListenable().addListener(listener);
>>>>> > }
>>>>> >
>>>>> >
>>>>> > Here running a list returns empty size all the time
>>>>> >
>>>>> > private static void list(PathChildrenCache cache)
>>>>> > {
>>>>> >
>>>>> > if ( cache.getCurrentData().size() == 0 )
>>>>> > {
>>>>> > System.out.println("* empty *");
>>>>> > }
>>>>> > else
>>>>> > {
>>>>> > for ( ChildData data : cache.getCurrentData() )
>>>>> > {
>>>>> > System.out.println(data.getPath() + " = " + new
>>>>> > String(data.getData()));
>>>>> > }
>>>>> > }
>>>>> > }
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>