List of usage examples for org.apache.zookeeper WatchedEvent getState
public KeeperState getState()
From source file:com.proofpoint.zookeeper.ConnectionState.java
License:Apache License
@Override public void process(WatchedEvent event) { boolean localIsConnected; synchronized (this) { boolean needsNotify = false; if (event.getType() == Watcher.Event.EventType.None) { boolean wasConnected = isConnected; isConnected = (event.getState() == Event.KeeperState.SyncConnected); needsNotify = isConnected && !wasConnected; if (event.getState() == Event.KeeperState.Expired) { File sessionIdFile = new File(config.getSessionStorePath()); if (!sessionIdFile.delete()) { log.error("Could not delete session ID file: " + config.getSessionStorePath()); }//from w w w . j av a 2 s . c o m needsNotify = true; } else if (event.getState() == Event.KeeperState.Disconnected) { needsNotify = true; } } if (needsNotify) { if (!isConnected && (zookeeper != null)) { try { zookeeper.close(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); log.error(e, "Interrupted trying to close Zookeeper. Ignoring at this level."); } clear(); } notifyAll(); } localIsConnected = isConnected; } if (localIsConnected) { client.postEvent(new ZookeeperEvent(getTypeFromWatched(event), 0, event.getPath(), null, null, null, null, null, null)); } }
From source file:com.rapleaf.hank.ZkTestCase.java
License:Apache License
@Override protected void setUp() throws Exception { super.setUp(); Logger.getLogger("org.apache.zookeeper").setLevel(Level.WARN); setupZkServer();// ww w . j a v a2 s.c om final Object lock = new Object(); final AtomicBoolean connected = new AtomicBoolean(false); zk = new ZooKeeperPlus("127.0.0.1:" + zkClientPort, 1000000, new Watcher() { @Override public void process(WatchedEvent event) { switch (event.getType()) { case None: if (event.getState() == KeeperState.SyncConnected) { connected.set(true); synchronized (lock) { lock.notifyAll(); } } } LOG.debug(event.toString()); } }); synchronized (lock) { lock.wait(2000); } if (!connected.get()) { fail("timed out waiting for the zk client connection to come online!"); } LOG.debug("session timeout: " + zk.getSessionTimeout()); zk.deleteNodeRecursively(zkRoot); createNodeRecursively(zkRoot); }
From source file:com.rapleaf.hank.zookeeper.ZooKeeperConnection.java
License:Apache License
/** * Listens for notifications from the ZooKeeper service telling that we have * been connected, disconnected, or our session has expired. * //from w ww .j a v a 2 s .c o m * Upon connection, we first make a call to {@link #onConnect()}, and then we * release all threads that are blocking on {@link #waitForConnection()}. * * Upon disconnection, we call {@link #onDisconnect()}, and then we reset the * latch to block any threads that call {@link #waitForConnection()}. * * On session expiry, we call {@link #onSessionExpire()}, reset the latch, and * then manually try to reconnect to the ZooKeeper service. * * @param event */ @Override public void process(WatchedEvent event) { if (event.getType() == Event.EventType.None) { KeeperState state = event.getState(); switch (state) { case SyncConnected: onConnect(); connectedSignal.countDown(); break; case Disconnected: onDisconnect(); connectedSignal = new CountDownLatch(1); break; case Expired: onSessionExpire(); connectedSignal = new CountDownLatch(1); try { connect(maxConnectAttempts); } catch (IOException e) { LOG.fatal("Failed to connect to the ZooKeeper service", e); throw new RuntimeException("Couldn't connect to the ZooKeeper service", e); } break; } // Return because we are done processing this event; do not let subclasses // process. return; } }
From source file:com.renren.zookeeper.accessor.test.PublishTest.java
License:Open Source License
@BeforeClass public static void init() throws IOException, KeeperException { if (zookeeperBackgroundServer == null) { zookeeperBackgroundServer = new ZookeeperBackgroundServer(); Thread zkBackgroundServer = new Thread(zookeeperBackgroundServer); zkBackgroundServer.setDaemon(true); zkBackgroundServer.start();// www . j a v a2 s .c o m } config = new ZkConfig(); final CountDownLatch countDownLatch = new CountDownLatch(1); zooKeeper = new ZooKeeper(config.getHost(), config.getSessionTime(), new Watcher() { @Override public void process(WatchedEvent event) { if (event.getType() == EventType.None && event.getState() == KeeperState.SyncConnected) { countDownLatch.countDown(); } else if (event.getType() == EventType.None && event.getState() == KeeperState.Disconnected) { System.err.println("The connection between zookeeper server and localhost has down."); } } }); try { countDownLatch.await(10, TimeUnit.SECONDS); } catch (InterruptedException e1) { System.err.println("Can't connect zookeeper server, please check 2181 port and config file."); e1.printStackTrace(); throw new IOException("Can't connect zookeeper server."); } try { accessor = Accessor.getInstance(config); recursiveDelete('/' + PREFIX_STRING); try { zooKeeper.delete('/' + config.getRoot(), -1); } catch (KeeperException.NoNodeException e1) { // node not exist, ignore. } zooKeeper.create('/' + config.getRoot(), null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); recursiveCreate('/' + PREFIX_STRING); } catch (InterruptedException e) { e.printStackTrace(); } }
From source file:com.sharksharding.resources.conn.ZookeeperConnectionManager.java
License:Apache License
/** * zookeeper//from w ww. ja v a 2 s .c o m * * @author JohnGao */ private void connection() { try { zk_client = new ZooKeeper(zk_address, zk_session_timeout, new Watcher() { @Override public void process(WatchedEvent event) { final KeeperState STATE = event.getState(); switch (STATE) { case SyncConnected: countDownLatch.countDown(); logger.info("connection zookeeper success"); break; case Disconnected: logger.warn("zookeeper connection is disconnected"); break; case Expired: logger.error("zookeeper session expired"); break; case AuthFailed: logger.error("authentication failure"); default: break; } } }); countDownLatch.await(); /* ?? */ registerNode.register(zk_client, nodePath); } catch (IOException | InterruptedException e) { throw new ConnectionException(e.toString()); } }
From source file:com.sharksharding.util.sequence.zookeeper.ZookeeperConnectionManager.java
License:Apache License
/** * zookeeper// w w w . j av a2s.co m * * @author gaoxianglong * * @throws ConnectionException * * @return void */ private static void connection() throws ConnectionException { try { zk_client = new ZooKeeper(zk_address, zk_session_timeout, new Watcher() { @Override public void process(WatchedEvent event) { final KeeperState STATE = event.getState(); switch (STATE) { case SyncConnected: countDownLatch.countDown(); logger.info("connection zookeeper success"); break; case Disconnected: logger.warn("zookeeper connection is disconnected"); break; case Expired: logger.error("zookeeper session expired"); break; case AuthFailed: logger.error("authentication failure"); default: break; } } }); countDownLatch.await(); setZk_client(zk_client); } catch (IOException | InterruptedException e) { throw new ConnectionException(e.toString()); } }
From source file:com.sonian.elasticsearch.zookeeper.client.ZooKeeperClientService.java
License:Apache License
@Override protected void doStart() throws ElasticsearchException { try {//from w w w . ja v a 2s . co m final Watcher watcher = new Watcher() { @Override public void process(WatchedEvent event) { switch (event.getState()) { case Expired: resetSession(); break; case SyncConnected: notifySessionConnected(); break; case Disconnected: notifySessionDisconnected(); break; } } }; zooKeeper = zooKeeperFactory.newZooKeeper(watcher); createPersistentNode(environment.rootNodePath()); createPersistentNode(environment.clustersNodePath()); } catch (InterruptedException e) { throw new ZooKeeperClientException("Cannot start ZooKeeper client", e); } }
From source file:com.takin.rpc.zkclient.ZkClient.java
License:Apache License
public void process(WatchedEvent event) { logger.debug("Received event: " + event); _zookeeperEventThread = Thread.currentThread(); boolean stateChanged = event.getPath() == null; boolean znodeChanged = event.getPath() != null; boolean dataChanged = event.getType() == EventType.NodeDataChanged || // event.getType() == EventType.NodeDeleted || event.getType() == EventType.NodeCreated || // event.getType() == EventType.NodeChildrenChanged; getEventLock().lock();//from w w w. ja v a 2 s .c o m try { // We might have to install child change event listener if a new node was created if (getShutdownTrigger()) { logger.debug("ignoring event '{" + event.getType() + " | " + event.getPath() + "}' since shutdown triggered"); return; } if (stateChanged) { processStateChanged(event); } if (dataChanged) { processDataOrChildChange(event); } } finally { if (stateChanged) { getEventLock().getStateChangedCondition().signalAll(); // If the session expired we have to signal all conditions, because watches might have been removed and // there is no guarantee that those // conditions will be signaled at all after an Expired event if (event.getState() == KeeperState.Expired) { getEventLock().getZNodeEventCondition().signalAll(); getEventLock().getDataChangedCondition().signalAll(); // We also have to notify all listeners that something might have changed fireAllEvents(); } } if (znodeChanged) { getEventLock().getZNodeEventCondition().signalAll(); } if (dataChanged) { getEventLock().getDataChangedCondition().signalAll(); } getEventLock().unlock(); logger.debug("Leaving process event"); } }
From source file:com.takin.rpc.zkclient.ZkClient.java
License:Apache License
private void processStateChanged(WatchedEvent event) { logger.info("zookeeper state changed (" + event.getState() + ")"); setCurrentState(event.getState());//from w ww . j a va2 s . c o m if (getShutdownTrigger()) { return; } try { fireStateChangedEvent(event.getState()); if (event.getState() == KeeperState.Expired) { reconnect(); fireNewSessionEvents(); } } catch (final Exception e) { throw new RuntimeException("Exception while restarting zk client", e); } }
From source file:com.talis.platform.sequencing.zookeeper.ZooKeeperProvider.java
License:Apache License
@Override public void process(WatchedEvent event) { switch (event.getType()) { case None://from w w w. ja v a 2 s. co m processNoneTypeEvent(event.getState()); default: // do nothing } }