List of usage examples for org.apache.zookeeper WatchedEvent getState
public KeeperState getState()
From source file:org.apache.bookkeeper.zookeeper.BkZooKeeperClient.java
License:Apache License
@Override public void process(WatchedEvent event) { if (event.getType() == EventType.None && event.getState() == KeeperState.Expired) { onExpired();/*w w w .ja va 2 s . co m*/ } }
From source file:org.apache.bookkeeper.zookeeper.TestZooKeeperClient.java
License:Apache License
@Test(timeout = 12000) public void testReconnectAfterExipred() throws Exception { final CountDownLatch expireLatch = new CountDownLatch(1); Watcher testWatcher = new Watcher() { @Override/*from www . jav a 2 s .c om*/ public void process(WatchedEvent event) { if (event.getType() == EventType.None && event.getState() == KeeperState.Expired) { expireLatch.countDown(); } } }; final int timeout = 2000; ZooKeeperWatcherBase watcherManager = new ZooKeeperWatcherBase(timeout).addChildWatcher(testWatcher); List<Watcher> watchers = new ArrayList<Watcher>(1); watchers.add(testWatcher); ZooKeeperClient client = new ShutdownZkServerClient(zkUtil.getZooKeeperConnectString(), timeout, watcherManager, new BoundExponentialBackoffRetryPolicy(timeout, timeout, 0)); client.waitForConnection(); Assert.assertTrue("Client failed to connect an alive ZooKeeper.", client.getState().isConnected()); logger.info("Expire zookeeper client"); expireZooKeeperSession(client, timeout); // wait until session expire Assert.assertTrue("Client registered watcher should receive expire event.", expireLatch.await(2 * timeout, TimeUnit.MILLISECONDS)); Assert.assertFalse("Client doesn't receive expire event from ZooKeeper.", client.getState().isConnected()); try { client.exists("/tmp", false); Assert.fail("Should fail due to connection loss."); } catch (KeeperException.ConnectionLossException cle) { // expected } catch (KeeperException.SessionExpiredException cle) { // expected } zkUtil.restartServer(); // wait for a reconnect cycle Thread.sleep(2 * timeout); Assert.assertTrue("Client failed to connect zookeeper even it was back.", client.getState().isConnected()); try { client.exists("/tmp", false); } catch (KeeperException.ConnectionLossException cle) { Assert.fail("Should not throw ConnectionLossException"); } catch (KeeperException.SessionExpiredException cle) { Assert.fail("Should not throw SessionExpiredException"); } }
From source file:org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase.java
License:Apache License
@Override public void process(WatchedEvent event) { // If event type is NONE, this is a connection status change if (event.getType() != EventType.None) { LOG.debug("Received event: {}, path: {} from ZooKeeper server", event.getType(), event.getPath()); getEventCounter(event.getType()).inc(); // notify the child watchers notifyEvent(event);/*from w w w . j a v a2 s.com*/ return; } getStateCounter(event.getState()).inc(); LOG.debug("Received {} from ZooKeeper server", event.getState()); // TODO: Needs to handle AuthFailed, SaslAuthenticated events switch (event.getState()) { case SyncConnected: LOG.info("ZooKeeper client is connected now."); clientConnectLatch.countDown(); break; case Disconnected: LOG.info( "ZooKeeper client is disconnected from zookeeper now, but it is OK unless we received EXPIRED event."); break; case Expired: clientConnectLatch = new CountDownLatch(1); LOG.error("ZooKeeper client connection to the ZooKeeper server has expired!"); break; default: // do nothing break; } // notify the child watchers notifyEvent(event); }
From source file:org.apache.brooklyn.entity.messaging.zookeeper.ZooKeeperTestSupport.java
License:Apache License
public ZooKeeperTestSupport(final HostAndPort hostAndPort) throws Exception { final int sessionTimeout = 3000; zk = new ZooKeeper(hostAndPort.toString(), sessionTimeout, new Watcher() { @Override/*from ww w . j a v a 2 s . c o m*/ public void process(WatchedEvent event) { if (event.getState() == Event.KeeperState.SyncConnected) { LOG.debug("Connected to ZooKeeper at {}", hostAndPort); connSignal.countDown(); } else { LOG.info("WatchedEvent at {}: {}", hostAndPort, event.getState()); } } }); connSignal.await(); }
From source file:org.apache.camel.component.zookeeper.ConnectionHolder.java
License:Apache License
public void process(WatchedEvent event) { if (event.getState() == KeeperState.SyncConnected) { connectionLatch.countDown();/*from w w w .j ava 2 s . com*/ } connectionLatch.countDown(); }
From source file:org.apache.cassandra.mutex.ClusterMutex.java
License:Apache License
/** * process any events from ZooKeeper. We simply wake up any clients that are waiting for * file deletion. Number of clients is usually very small (most likely just one), so no need * for any complex logic.//from w ww.j a v a 2 s . c o m */ public void process(WatchedEvent event) { if (logger.isTraceEnabled()) logger.trace("Got event " + event.getType() + ", keeper state " + event.getState() + ", path " + event.getPath()); synchronized (mutex) { mutex.notifyAll(); } }
From source file:org.apache.curator.ConnectionState.java
License:Apache License
@Override public void process(WatchedEvent event) { if (LOG_EVENTS) { log.debug("ConnectState watcher: " + event); }//from w ww . ja v a 2s. c om final boolean eventTypeNone = event.getType() == Watcher.Event.EventType.None; if (eventTypeNone) { boolean wasConnected = isConnected.get(); boolean newIsConnected = checkState(event.getState(), wasConnected); if (newIsConnected != wasConnected) { isConnected.set(newIsConnected); connectionStartMs = System.currentTimeMillis(); } } // only wait during tests if (debugWaitOnExpiredEvent && event.getState() == Event.KeeperState.Expired) { waitOnExpiredEvent(); } for (Watcher parentWatcher : parentWatchers) { OperationTrace trace = new OperationTrace("connection-state-parent-process", tracer.get(), getSessionId()); parentWatcher.process(event); trace.commit(); } if (eventTypeNone) handleState(event.getState()); }
From source file:org.apache.curator.framework.imps.CuratorFrameworkImpl.java
License:Apache License
public CuratorFrameworkImpl(CuratorFrameworkFactory.Builder builder) { ZookeeperFactory localZookeeperFactory = makeZookeeperFactory(builder.getZookeeperFactory()); this.client = new CuratorZookeeperClient(localZookeeperFactory, builder.getEnsembleProvider(), builder.getSessionTimeoutMs(), builder.getConnectionTimeoutMs(), new Watcher() { @Override//www.ja v a 2 s . c om 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(), builder.canBeReadOnly()); listeners = new ListenerContainer<CuratorListener>(); unhandledErrorListeners = new ListenerContainer<UnhandledErrorListener>(); backgroundOperations = new DelayQueue<OperationAndData<?>>(); namespace = new NamespaceImpl(this, builder.getNamespace()); threadFactory = getThreadFactory(builder); maxCloseWaitMs = builder.getMaxCloseWaitMs(); connectionStateManager = new ConnectionStateManager(this, builder.getThreadFactory()); compressionProvider = builder.getCompressionProvider(); aclProvider = builder.getAclProvider(); state = new AtomicReference<CuratorFrameworkState>(CuratorFrameworkState.LATENT); useContainerParentsIfAvailable = builder.useContainerParentsIfAvailable(); byte[] builderDefaultData = builder.getDefaultData(); defaultData = (builderDefaultData != null) ? Arrays.copyOf(builderDefaultData, builderDefaultData.length) : new byte[0]; authInfos = buildAuths(builder); failedDeleteManager = new FailedDeleteManager(this); namespaceFacadeCache = new NamespaceFacadeCache(this); }
From source file:org.apache.curator.framework.imps.TestEnabledSessionExpiredState.java
License:Apache License
@Test public void testInjectedWatchedEvent() throws Exception { Assert.assertEquals(states.poll(timing.milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.CONNECTED); final CountDownLatch latch = new CountDownLatch(1); Watcher watcher = new Watcher() { @Override//from w ww . j a v a 2s . c o m public void process(WatchedEvent event) { if (event.getType() == Event.EventType.None) { if (event.getState() == Event.KeeperState.Expired) { latch.countDown(); } } } }; client.checkExists().usingWatcher(watcher).forPath("/"); server.stop(); Assert.assertTrue(timing.forSessionSleep().awaitLatch(latch)); }
From source file:org.apache.curator.framework.imps.TestFrameworkEdges.java
License:Apache License
@Test public void testSessionKilled() throws Exception { CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), timing.session(), timing.connection(), new RetryOneTime(1)); client.start();/* w w w . j a v a 2 s . 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 { CloseableUtils.closeQuietly(client); } }