Коллеги помогите разобраться с проблемой
Код следующий:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
package com.zk;
import org.junit.Before;
import org.junit.Test;
import com.netflix.curator.utils.ZKPaths;
import com.netflix.curator.framework.CuratorFramework;
import com.netflix.curator.framework.CuratorFrameworkFactory;
import com.netflix.curator.framework.recipes.cache.PathChildrenCache;
import com.netflix.curator.framework.recipes.cache.PathChildrenCacheEvent;
import com.netflix.curator.framework.recipes.cache.PathChildrenCacheListener;
import com.netflix.curator.retry.RetryNTimes;
import java.util.LinkedList;
import java.util.concurrent.atomic.AtomicInteger;
import static org.junit.Assert.assertEquals;
public class ZookeeperEventsTest {
private LinkedList<Integer> data;
@Before
public void setUp() {
}
@Test
public void testZookeeperEvents() throws Exception {
CuratorFramework client = CuratorFrameworkFactory.newClient("server:2181", new RetryNTimes(10, 1000));
client.start();
String znode = "/clust1/cluster/installedNodes";
ZKPaths.mkdirs(client.getZookeeperClient().getZooKeeper(), znode, true);
PathChildrenCache cache = new PathChildrenCache(client, znode, true);
cache.start(true);
final AtomicInteger i = new AtomicInteger(0);
cache.getListenable().addListener(new PathChildrenCacheListener() {
@Override
public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
if (event != null) {
System.out.println("event=" + event.getType());
i.incrementAndGet();
}
}
});
for (int j = 0; j < 25; j++) {
client.create().forPath(znode + "/clust1", "data".getBytes());
client.setData().forPath(znode + "/clust1", "data1".getBytes());
client.setData().forPath(znode + "/clust1", "data2".getBytes());
client.delete().forPath(znode + "/clust1");
}
Thread.sleep(10000);
assertEquals(100, i.get());
}
}
Почему счетчик в конце не равен 100.
В среднем он равен 67.
И как сделать чтоб каждый эвент ловился и обрабатывался ?
Спасибо.