curator-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alvaro Gareppe <agare...@gmail.com>
Subject Re: PathChildrenCache creates the node if not present
Date Thu, 21 Jul 2016 19:35:52 GMT
The ZookeeperTestingServer was just a wrapper of the TestingServer

I changed the code to use the TestingServer.. and the code is stuck in the
while (printing lines in the system out)

The only difference is that I'm using curator 2.9...

On Thu, Jul 21, 2016 at 4:27 PM, Scott Blum <dragonsinth@gmail.com> wrote:

> On 2.11 I see the same thing, the hang depends only on closing the ZK
> server.  I don't see the TreeCache threads running.
>
> On Thu, Jul 21, 2016 at 3:26 PM, Scott Blum <dragonsinth@gmail.com> wrote:
>
>> Hi Alvaro, I ran your example but I wasn't able to reproduce the problem
>> you're seeing on master.  What exact version of Curator are you running?
>>
>> I did have to make one change, though.  I don't have a  com.sac.panorama.
>> zookeeper.server.junitserver.ZookeeperTestingServer, so I replaced it
>> with a org.apache.curator.test.TestingServer.  When I ran through your
>> example, I found it DID hang, but not where you said.  In my run, TreeCache
>> shutdown cleanly and the thread disappeared, but then main() refused to
>> exit because the ZK test server was still running.  Add a zk.close() to the
>> end of main() allowed it to shutdown cleanly.  I'll try this on 2.11.
>>
>> On Thu, Jul 21, 2016 at 2:45 PM, Alvaro Gareppe <agareppe@gmail.com>
>> wrote:
>>
>>> This is the case:
>>> There is not evan a listener defined ( not needed to reproduce the
>>> problem)
>>> If you see there.. the "Curator-TreeCache-0" is running even the
>>> tc.close() is already called.
>>> This code runs forever,
>>>
>>> *package* com.sac.panorama.zookeeper.examples;
>>>
>>>
>>>
>>> *import* java.util.Set;
>>>
>>>
>>>
>>> *import* org.apache.curator.framework.CuratorFramework;
>>>
>>> *import* org.apache.curator.framework.CuratorFrameworkFactory;
>>>
>>> *import* org.apache.curator.framework.recipes.cache.TreeCache;
>>>
>>> *import* org.apache.curator.retry.RetryForever;
>>>
>>>
>>>
>>> *import*
>>>  com.sac.panorama.zookeeper.server.junitserver.ZookeeperTestingServer;
>>>
>>>
>>>
>>> *public* *class* DataWatcherCuratorExample {
>>>
>>>
>>>
>>>     *public* *static* *void* main(String[] args) *throws* Exception {
>>>
>>>         ZookeeperTestingServer zk;
>>>
>>>         zk = *new* ZookeeperTestingServer();
>>>
>>>         zk.doStart();
>>>
>>>         CuratorFramework connection = CuratorFrameworkFactory.
>>> *newClient*(zk.getConnectString(),
>>>
>>>                         *new* RetryForever(10000));
>>>
>>>
>>>
>>>         connection.start();
>>>
>>>
>>>
>>>
>>>
>>>         connection.create().forPath("/test");
>>>
>>>         TreeCache tc = TreeCache.*newBuilder*(connection, "/test"
>>> ).setCacheData(*false*).setMaxDepth(1)
>>>
>>>                         .setCreateParentNodes(*false*).build();
>>>
>>>
>>>
>>>         *if* (*isThreadRunning*()) {
>>>
>>>             *throw* *new* RuntimeException("");  // this is not thrown
>>> [OK]
>>>
>>>         }
>>>
>>>
>>>
>>>         tc.start();
>>>
>>>
>>>
>>>         tc.close();
>>>
>>>
>>>
>>>         System.*out*.println();
>>>
>>>
>>>
>>>         *while*(*isThreadRunning*()) {  // this runns forever cause the
>>> thread "Curator-TreeCache" is not stopped after close
>>>
>>>             Thread.*sleep*(1000);
>>>
>>>             System.*out*.println("");
>>>
>>>         }
>>>
>>>
>>>
>>>         connection.close();
>>>
>>>     }
>>>
>>>
>>>
>>>     *private* *static* *boolean* isThreadRunning() {
>>>
>>>         Set<Thread> runningThreads = Thread.*getAllStackTraces*
>>> ().keySet();
>>>
>>>         *boolean* threadFound = *false*;
>>>
>>>         *for* (Thread thread : runningThreads) {
>>>
>>>             *if* (thread.getName().startsWith("Curator-TreeCache") &&
>>> thread.isAlive()) {
>>>
>>>                 threadFound = *true*;
>>>
>>>             }
>>>
>>>         }
>>>
>>>         *return* threadFound;
>>>
>>>     }
>>>
>>> }
>>>
>>> On Thu, Jul 21, 2016 at 2:48 PM, Scott Blum <dragonsinth@gmail.com>
>>> wrote:
>>>
>>>> What's the thread doing?  Can you grab a stack trace to see where it's
>>>> hung?
>>>> That thread is only used to publish events out to clients, maybe the
>>>> thread is hung in client code?
>>>>
>>>> On Thu, Jul 21, 2016 at 9:26 AM, Alvaro Gareppe <agareppe@gmail.com>
>>>> wrote:
>>>>
>>>>> I just did the upgrate to the version 2.11 and the issue is still
>>>>> there. I still see the Curator-TreeCache-X after the TreeCache is
>>>>> closed.
>>>>> Any ideas ?
>>>>>
>>>>> On Thu, Jul 21, 2016 at 9:22 AM, Alvaro Gareppe <agareppe@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Do you know if there is a thread issue with the TreeCache? Cause
>>>>>> after I call cache.close() the Curator-TreeCache-X thread is still
alive.
>>>>>>
>>>>>> On Tue, Jul 19, 2016 at 1:33 PM, Alvaro Gareppe <agareppe@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I changed the PathChildrenCache to TreeCache depth=1 and worked
OK.
>>>>>>>
>>>>>>> Thanks guys!
>>>>>>>
>>>>>>> On Fri, Jul 15, 2016 at 6:03 PM, Scott Blum <dragonsinth@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> TreeCache is read-only unless you specifically ask it to
create the
>>>>>>>> root node.  Use depth=1 to watch only a single node.
>>>>>>>>
>>>>>>>> On Thu, Jul 14, 2016 at 5:46 PM, Cameron McKenzie <
>>>>>>>> cammckenzie@apache.org> wrote:
>>>>>>>>
>>>>>>>>> I don't have the code handy, but have you tried TreeCache?
>>>>>>>>>
>>>>>>>>> On 14 Jul 2016 11:31 PM, "Alvaro Gareppe" <agareppe@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Is there a way to avoid the node creation on PathChildrenCache
>>>>>>>>>> start() ?
>>>>>>>>>>
>>>>>>>>>> I have this case
>>>>>>>>>>
>>>>>>>>>> 1.- There is no node in ZK
>>>>>>>>>> 2.- I do this:
>>>>>>>>>>          cp = new PathChildrenCache(conn, "/a",
>>>>>>>>>> PathChildrenCache.CACHE_PATH_ONLY);
>>>>>>>>>>          cp.start()
>>>>>>>>>> 3.- now I have a node /a in ZK
>>>>>>>>>>
>>>>>>>>>> Im using the pathCache in a different thread (and
possibly
>>>>>>>>>> different server) of the node creation, so I would
like to have an option
>>>>>>>>>> where the node is not created, so it does nothing
or throws and exception
>>>>>>>>>> in that case (both works for me).
>>>>>>>>>>
>>>>>>>>>> Is there some way to configure the PathChildrenCache
to do so ?
>>>>>>>>>>
>>>>>>>>>> I'm using curator version: 2.9.1
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Ing. Alvaro Gareppe
>>>>>>>>>> agareppe@gmail.com
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Ing. Alvaro Gareppe
>>>>>>> agareppe@gmail.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Ing. Alvaro Gareppe
>>>>>> agareppe@gmail.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Ing. Alvaro Gareppe
>>>>> agareppe@gmail.com
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Ing. Alvaro Gareppe
>>> agareppe@gmail.com
>>>
>>
>>
>


-- 
Ing. Alvaro Gareppe
agareppe@gmail.com

Mime
View raw message