curator-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Cameron McKenzie <mckenzie....@gmail.com>
Subject Re: curator pathcache
Date Wed, 09 Mar 2016 22:19:34 GMT
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 <elastic.l.k@gmail.com> 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 <mckenzie.cam@gmail.com>
> 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 <elastic.l.k@gmail.com>
>> wrote:
>>
>>>
>>> ---------- Forwarded message ----------
>>> From: s influxdb <elastic.l.k@gmail.com>
>>> Date: Wed, Mar 9, 2016 at 10:36 AM
>>> Subject: Re: curator pathcache
>>> To: Jordan Zimmerman <jordan@jordanzimmerman.com>
>>> Cc: user@curator.apache.org
>>>
>>>
>>> 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 <
>>> jordan@jordanzimmerman.com> 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 <elastic.l.k@gmail.com>
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()));
>>>> >                }
>>>> >            }
>>>> >        }
>>>>
>>>>
>>>
>>>
>>
>

Mime
View raw message