List of usage examples for org.apache.zookeeper WatchedEvent getState
public KeeperState getState()
From source file:com.netflix.curator.BasicTests.java
License:Apache License
@Test public void testExpiredSession() throws Exception { // see http://wiki.apache.org/hadoop/ZooKeeper/FAQ#A4 final Timing timing = new Timing(); final CountDownLatch latch = new CountDownLatch(1); Watcher watcher = new Watcher() { @Override/*w w w . j av a2 s . c om*/ public void process(WatchedEvent event) { if (event.getState() == Event.KeeperState.Expired) { latch.countDown(); } } }; final CuratorZookeeperClient client = new CuratorZookeeperClient(server.getConnectString(), timing.session(), timing.connection(), watcher, new RetryOneTime(2)); client.start(); try { final AtomicBoolean firstTime = new AtomicBoolean(true); RetryLoop.callWithRetry(client, new Callable<Object>() { @Override public Object call() throws Exception { if (firstTime.compareAndSet(true, false)) { try { client.getZooKeeper().create("/foo", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } catch (KeeperException.NodeExistsException ignore) { // ignore } KillSession.kill(client.getZooKeeper(), server.getConnectString()); Assert.assertTrue(timing.awaitLatch(latch)); } ZooKeeper zooKeeper = client.getZooKeeper(); client.blockUntilConnectedOrTimedOut(); Assert.assertNotNull(zooKeeper.exists("/foo", false)); return null; } }); } finally { client.close(); } }
From source file:com.netflix.curator.ConnectionState.java
License:Apache License
@Override public void process(WatchedEvent event) { if (LOG_EVENTS) { log.debug("ConnectState watcher: " + event); }/*w w w. ja va2 s. c o m*/ for (Watcher parentWatcher : parentWatchers) { TimeTrace timeTrace = new TimeTrace("connection-state-parent-process", tracer.get()); parentWatcher.process(event); timeTrace.commit(); } boolean wasConnected = isConnected.get(); boolean newIsConnected = wasConnected; if (event.getType() == Watcher.Event.EventType.None) { newIsConnected = checkState(event.getState(), wasConnected); } if (newIsConnected != wasConnected) { isConnected.set(newIsConnected); connectionStartMs = System.currentTimeMillis(); } }
From source file:com.netflix.curator.framework.imps.CuratorFrameworkImpl.java
License:Apache License
public CuratorFrameworkImpl(CuratorFrameworkFactory.Builder builder) { this.client = new CuratorZookeeperClient(builder.getZookeeperFactory(), builder.getEnsembleProvider(), builder.getSessionTimeoutMs(), builder.getConnectionTimeoutMs(), new Watcher() { @Override// ww w .j av a 2 s .co m public void process(WatchedEvent watchedEvent) { CuratorEvent event = new CuratorEventImpl(CuratorFrameworkImpl.this, CuratorEventType.WATCHED, watchedEvent.getState().getIntValue(), unfixForNamespace(watchedEvent.getPath()), null, null, null, null, null, watchedEvent, null); processEvent(event); } }, builder.getRetryPolicy()); listeners = new ListenerContainer<CuratorListener>(); unhandledErrorListeners = new ListenerContainer<UnhandledErrorListener>(); backgroundOperations = new DelayQueue<OperationAndData<?>>(); namespace = new NamespaceImpl(this, builder.getNamespace()); threadFactory = getThreadFactory(builder); connectionStateManager = new ConnectionStateManager(this, builder.getThreadFactory()); compressionProvider = builder.getCompressionProvider(); aclProvider = builder.getAclProvider(); namespaceFacadeCache = new NamespaceFacadeCache(this); byte[] builderDefaultData = builder.getDefaultData(); defaultData = (builderDefaultData != null) ? Arrays.copyOf(builderDefaultData, builderDefaultData.length) : new byte[0]; if (builder.getAuthScheme() != null) { authInfo.set(new AuthInfo(builder.getAuthScheme(), builder.getAuthValue())); } failedDeleteManager = new FailedDeleteManager(this); }
From source file:com.netflix.curator.framework.imps.NamespaceWatchedEvent.java
License:Apache License
NamespaceWatchedEvent(CuratorFrameworkImpl client, WatchedEvent event) { super(event.getType(), event.getState(), client.unfixForNamespace(event.getPath())); }
From source file:com.netflix.curator.framework.imps.TestFrameworkEdges.java
License:Apache License
@Test public void testSessionKilled() throws Exception { CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1)); client.start();// w w w .j a v a 2s. c o m try { client.create().forPath("/sessionTest"); final AtomicBoolean sessionDied = new AtomicBoolean(false); Watcher watcher = new Watcher() { @Override public void process(WatchedEvent event) { if (event.getState() == Event.KeeperState.Expired) { sessionDied.set(true); } } }; client.checkExists().usingWatcher(watcher).forPath("/sessionTest"); KillSession.kill(client.getZookeeperClient().getZooKeeper(), server.getConnectString()); Assert.assertNotNull(client.checkExists().forPath("/sessionTest")); Assert.assertTrue(sessionDied.get()); } finally { client.close(); } }
From source file:com.netflix.curator.test.KillSession.java
License:Apache License
/** * Kill the given ZK session// w w w. j a v a 2s . co m * * @param client the client to kill * @param connectString server connection string * @param maxMs max time ms to wait for kill * @throws Exception errors */ public static void kill(ZooKeeper client, String connectString, int maxMs) throws Exception { long startTicks = System.currentTimeMillis(); final CountDownLatch sessionLostLatch = new CountDownLatch(1); Watcher sessionLostWatch = new Watcher() { @Override public void process(WatchedEvent event) { sessionLostLatch.countDown(); } }; client.exists("/___CURATOR_KILL_SESSION___" + System.nanoTime(), sessionLostWatch); final CountDownLatch connectionLatch = new CountDownLatch(1); Watcher connectionWatcher = new Watcher() { @Override public void process(WatchedEvent event) { if (event.getState() == Event.KeeperState.SyncConnected) { connectionLatch.countDown(); } } }; ZooKeeper zk = new ZooKeeper(connectString, maxMs, connectionWatcher, client.getSessionId(), client.getSessionPasswd()); try { if (!connectionLatch.await(maxMs, TimeUnit.MILLISECONDS)) { throw new Exception("KillSession could not establish duplicate session"); } try { zk.close(); } finally { zk = null; } while (client.getState().isConnected() && !sessionLostLatch.await(100, TimeUnit.MILLISECONDS)) { long elapsed = System.currentTimeMillis() - startTicks; if (elapsed > maxMs) { throw new Exception("KillSession timed out waiting for session to expire"); } } } finally { if (zk != null) { zk.close(); } } }
From source file:com.ngdata.hbaseindexer.indexer.IndexerIT.java
License:Apache License
private void cleanZooKeeper(String zkConnectString, String rootToDelete) throws Exception { int sessionTimeout = 10000; ZooKeeper zk = new ZooKeeper(zkConnectString, sessionTimeout, new Watcher() { @Override//w w w . j a va 2s.c o m public void process(WatchedEvent event) { if (event.getState() == Watcher.Event.KeeperState.Disconnected) { System.err.println("ZooKeeper Disconnected."); } else if (event.getState() == Event.KeeperState.Expired) { System.err.println("ZooKeeper session expired."); } } }); long waitUntil = System.currentTimeMillis() + sessionTimeout; while (zk.getState() != CONNECTED && waitUntil > System.currentTimeMillis()) { try { Thread.sleep(20); } catch (InterruptedException e) { break; } } if (zk.getState() != CONNECTED) { throw new RuntimeException("Failed to connect to ZK within " + sessionTimeout + "ms."); } if (zk.exists(rootToDelete, false) != null) { List<String> paths = new ArrayList<String>(); collectChildren(rootToDelete, zk, paths); paths.add(rootToDelete); for (String path : paths) { zk.delete(path, -1, null, null); } // The above deletes are async, wait for them to be finished long startWait = System.currentTimeMillis(); while (zk.exists(rootToDelete, null) != null) { Thread.sleep(5); if (System.currentTimeMillis() - startWait > 120000) { throw new RuntimeException("State was not cleared in ZK within the expected timeout"); } } } zk.close(); }
From source file:com.ngdata.sep.util.zookeeper.ZooKeeperImpl.java
License:Apache License
protected void setConnectedState(WatchedEvent event) { if (event.getState() == Watcher.Event.KeeperState.SyncConnected) { synchronized (connectedMonitor) { if (!connected) { connected = true;/* w w w. ja v a2 s. c o m*/ connectedMonitor.notifyAll(); } } } else if (event.getState() == Watcher.Event.KeeperState.Disconnected || event.getState() == Watcher.Event.KeeperState.Expired) { synchronized (connectedMonitor) { if (connected) { connected = false; connectedMonitor.notifyAll(); } } } }
From source file:com.objectdriven.maven.zookeeper.sample.DataMonitor.java
public void process(WatchedEvent event) { String path = event.getPath(); if (event.getType() == Event.EventType.None) { // We are are being told that the state of the // connection has changed switch (event.getState()) { case SyncConnected: // In this particular example we don't need to do anything // here - watches are automatically re-registered with // server and any watches triggered while the client was // disconnected will be delivered (in order of course) break; case Expired: // It's all over dead = true;//from w w w . j a v a 2s. c om listener.closing(KeeperException.Code.SessionExpired); break; } } else { if (path != null && path.equals(znode)) { // Something has changed on the node, let's find out zk.exists(znode, true, this, null); } } if (chainedWatcher != null) { chainedWatcher.process(event); } }
From source file:com.oneapm.base.tools.ZookeeperClient.java
/** * ??,?//w w w. j av a2 s. co m * * @param event */ @Override public void process(WatchedEvent event) { LOG.info("" + event.getState()); if (event.getType() == Event.EventType.NodeDataChanged && event.getPath().equals("/ni/caution")) { setRules(event.getPath()); } if (event.getType() == Event.EventType.NodeDataChanged && event.getPath().equals("/ni/license")) { setLicense(event.getPath()); } }