curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jordan Zimmerman (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (CURATOR-216) PathChildrenCacheListener could not receive CHILD_UPDATED events
Date Sun, 21 Jun 2015 16:44:00 GMT

     [ https://issues.apache.org/jira/browse/CURATOR-216?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jordan Zimmerman closed CURATOR-216.
------------------------------------
    Resolution: Later

PathChildrenCache (and ZooKeeper in general) does not guarantee that you will get every single
event. ZK is not a transactional system. What is happening is that the create() and setData()
are happening almost immediately and you are only getting the ADDED event. If you set cacheData
to true you will see that the ADDED event bytes are "something new".

> PathChildrenCacheListener could not receive CHILD_UPDATED events
> ----------------------------------------------------------------
>
>                 Key: CURATOR-216
>                 URL: https://issues.apache.org/jira/browse/CURATOR-216
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Recipes
>    Affects Versions: 2.6.0, 2.7.0, 2.7.1
>            Reporter: Xiaoshuang LU
>            Priority: Blocker
>
> Here is the scenario which can reproduce this issue.
> {code}
>     public void testChildUpdated() throws Exception
>     {
>         Timing timing = new Timing();
>         CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(),
timing.session(), timing.connection(), new RetryOneTime(1));
>         client.start();
>         try
>         {
>             final CountDownLatch updatedLatch = new CountDownLatch(1);
>             client.create().creatingParentsIfNeeded().forPath("/test");
>             PathChildrenCache cache = new PathChildrenCache(client, "/test", false);
>             cache.getListenable().addListener
>                 (
>                     new PathChildrenCacheListener()
>                     {
>                         @Override
>                         public void childEvent(CuratorFramework client, PathChildrenCacheEvent
event) throws Exception
>                         {
>                             if ( event.getType() == PathChildrenCacheEvent.Type.CHILD_UPDATED
)
>                             {
>                                 updatedLatch.countDown();
>                             }
>                         }
>                     }
>                 );
>             cache.start(PathChildrenCache.StartMode.BUILD_INITIAL_CACHE);
>             client.create().forPath("/test/foo", "first".getBytes());
>             client.setData().forPath("/test/foo", "something new".getBytes());
>             updatedLatch.await();
>         }
>         finally
>         {
>             CloseableUtils.closeQuietly(client);
>         }
>     }
> {code}
> The function will be blocked on "updatedLatch.await();".



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message