List of usage examples for org.apache.zookeeper WatchedEvent getType
public EventType getType()
From source file:io.seldon.api.state.ZkAlgorithmUpdater.java
License:Apache License
@Override public void run() { logger.info("Starting"); try {//from w w w. jav a2 s. c o m boolean error = false; while (keepRunning) { try { CuratorFramework client = null; boolean ok = false; for (int attempts = 0; attempts < 4 && !ok; attempts++) { client = curatorHandler.getCurator().usingNamespace(clientName); logger.info("Waiting until zookeeper connected on attempt " + attempts); ok = client.getZookeeperClient().blockUntilConnectedOrTimedOut(); if (ok) logger.info("zookeeper connected"); else { logger.error("Timed out waiting for zookeeper connect : attempt " + attempts); } } if (!ok) { logger.error("Failed to connect to zookeeper after multiple attempts - STOPPING"); return; } queue = new LinkedBlockingQueue<>(); final Watcher watcher = new Watcher() { boolean expired = false; @Override public void process(WatchedEvent event) { try { if (event.getPath() != null) queue.put(event.getPath()); else { logger.warn("Unexpected event " + event.getType().name() + " -> " + event.toString()); switch (event.getState()) { case SyncConnected: { } break; case Expired: { queue.put(""); } break; case Disconnected: { logger.warn("Disconnected from server"); //queue.put(""); } break; } } } catch (InterruptedException e) { throw new Error(e); } } }; logger.info("Checking path " + ALG_PATH + " exists"); if (client.checkExists().forPath(ALG_PATH) == null) { logger.warn( "Path " + ALG_PATH + " does not exist for client " + clientName + " creating..."); client.create().forPath(ALG_PATH); } else logger.info("Path " + ALG_PATH + " exists"); //client.getConnectionStateListenable().addListener(stateListener); boolean restart = false; while (keepRunning && !restart) { client.getData().usingWatcher(watcher).forPath(ALG_PATH); String path = queue.take(); if (!StringUtils.isEmpty(path)) { logger.info("Alg Path changed " + path); byte[] bytes = client.getData().forPath(ALG_PATH); try { ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes)); CFAlgorithm alg = (CFAlgorithm) in.readObject(); in.close(); //Update Algorithm for client logger.info( "Updating algorithm options for " + clientName + " to " + alg.toString()); Util.getAlgorithmService().setAlgorithmOptions(clientName, alg); numUpdates++; } catch (ClassNotFoundException e) { logger.error("Can't find class ", e); } catch (IOException e) { logger.error("Failed to deserialize algorithm for client " + clientName, e); } } else { //logger.warn("Empty path - maybe zookeeper connection state change watcher will be reset"); logger.warn("Will try to restart"); restart = true; } } } catch (IOException e) { logger.error("Exception trying to create sk client ", e); error = true; } catch (Exception e) { logger.error("Exception from zookeeper client ", e); error = true; } finally { } if (keepRunning && error) { logger.info("Sleeping " + sleepTime); Thread.sleep(sleepTime); if (sleepTime * 2 < maxSleepTime) sleepTime = sleepTime * 2; error = false; } } } catch (InterruptedException e) { logger.warn("Sleep interuppted ", e); } logger.info("Stopping"); }
From source file:io.teknek.daemon.Worker.java
License:Apache License
@Override public void process(WatchedEvent event) { logger.debug("recived event " + event); if (event.getState() == KeeperState.Expired || event.getState() == KeeperState.Disconnected) { driver.setGoOn(false);/*from w ww. j a v a2 s . c o m*/ shutdown(); } if (event.getType() == EventType.NodeDataChanged || event.getType() == EventType.NodeDeleted) { driver.setGoOn(false); shutdown(); } }
From source file:me.tfeng.play.avro.d2.AvroD2Server.java
License:Apache License
@Override public void process(WatchedEvent event) { if (event.getType() == EventType.NodeDeleted && event.getPath().equals(nodePath) || event.getType() == EventType.None && event.getState() == KeeperState.SyncConnected) { // If the node is unexpectedly deleted or if ZooKeeper connection is restored, register the // server again. register();//from w w w .java2 s. c o m } }
From source file:ml.shifu.guagua.BasicCoordinator.java
License:Apache License
@Override public void process(final WatchedEvent event) { LOG.debug("process: Got a new event, path = {}, type = {}, state = {}", event.getPath(), event.getType(), event.getState());//from w w w. j ava 2s. c om if ((event.getPath() == null) && (event.getType() == EventType.None)) { if (event.getState() == KeeperState.SyncConnected) { LOG.info("process: Asynchronous connection complete."); this.getZkConnLatch().countDown(); } else { LOG.warn("process: Got unknown null path event {}.", event); } return; } }
From source file:ml.shifu.guagua.master.AsyncMasterCoordinator.java
License:Apache License
@Override public void process(WatchedEvent event) { LOG.debug("DEBUG: process: Got a new event, path = {}, type = {}, state = {}", event.getPath(), event.getType(), event.getState()); if ((event.getPath() == null) && (event.getType() == EventType.None)) { if (event.getState() == KeeperState.SyncConnected) { LOG.info("process: Asynchronous connection complete."); super.getZkConnLatch().countDown(); } else {//ww w . ja va 2 s .c om LOG.warn("process: Got unknown null path event " + event); } return; } /** * Check lock signal condition. */ String appWorkerBaseNode = getWorkerBaseNode(getAppId(), getCurrentIteration()).toString(); if (event.getPath().equals(appWorkerBaseNode) && (event.getType() == EventType.NodeChildrenChanged)) { if (getCurrentIteration() == 0) { this.workerInitLock.signal(); } else { this.workerIterationLock.signal(); } } }
From source file:ml.shifu.guagua.worker.AsyncWorkerCoordinator.java
License:Apache License
@Override public void process(WatchedEvent event) { LOG.info("DEBUG: process: Got a new event, path = {}, type = {}, state = {}", event.getPath(), event.getType(), event.getState()); if ((event.getPath() == null) && (event.getType() == EventType.None)) { if (event.getState() == KeeperState.SyncConnected) { LOG.info("process: Asynchronous connection complete."); super.getZkConnLatch().countDown(); } else {//from w ww. j av a 2s. c om LOG.warn("process: Got unknown null path event " + event); } return; } String appMasterNode = getCurrentMasterNode(getAppId(), getCurrentIteration()).toString(); if (event.getPath().equals(appMasterNode) && (event.getType() == EventType.NodeCreated || event.getType() == EventType.NodeDataChanged)) { if (getCurrentIteration() == 0) { this.masterInitLock.signal(); } else { this.masterIterationLock.signal(); } } }
From source file:net.killa.kept.KeptLock.java
License:Apache License
private boolean lockIt(long t, TimeUnit tu) throws KeeperException, InterruptedException { final CountDownLatch latch = new CountDownLatch(1); // convert the given time to milliseconds and add it to the current time long last = System.currentTimeMillis() + TimeUnit.MILLISECONDS.convert(t, tu); do {//from w ww . j a v a2 s . c o m if (this.keeper.exists(this.znode, new Watcher() { @Override public void process(WatchedEvent event) { if (event.getType() == EventType.NodeDeleted) latch.countDown(); else if (event.getType() == EventType.NodeCreated) ; // ignore it else throw new RuntimeException("unexpected event type" + event.getType()); } }) != null) { if (!latch.await(t, tu)) try { this.keeper.create(this.znode, ManagementFactory.getRuntimeMXBean().getName().getBytes(), this.acl, CreateMode.EPHEMERAL); return true; } catch (KeeperException.NodeExistsException e) { // ignore it } catch (KeeperException e) { throw e; } else return false; } else { try { this.keeper.create(this.znode, ManagementFactory.getRuntimeMXBean().getName().getBytes(), this.acl, CreateMode.EPHEMERAL); return true; } catch (KeeperException.NodeExistsException e) { // ignore it } catch (KeeperException e) { throw e; } } } while (System.currentTimeMillis() < last); return false; }
From source file:net.killa.kept.SynchronizingWatcher.java
License:Apache License
/** * Synchronize a {@link Synchronizable} with the {@link ZooKeeper} cluster * when a NodeChildrenChangedEvent is detected, or the client reconnects to * the cluster.//from w w w . ja v a 2s .com * * @param event * A {@link WatchedEvent} that triggers synchronization * */ @Override public void process(WatchedEvent event) { // ignore no-op events and states in which we cannot read from the zk // cluster if (event.getType() == EventType.None || event.getState() == KeeperState.Disconnected || event.getState() == KeeperState.Expired) { SynchronizingWatcher.LOG .debug("ignoring no-op event " + event.getType() + " in state " + event.getState()); return; } try { // synchronize the target SynchronizingWatcher.LOG.debug("synchronizing"); this.synchronizable.synchronize(); return; } catch (KeeperException e) { throw new RuntimeException("KeeperException caught", e); } catch (InterruptedException e) { throw new RuntimeException("InterruptedException caught", e); } }
From source file:net.phoenix.thrift.server.ZookeeperRegisterHandler.java
License:Apache License
@Override public void process(WatchedEvent event) { switch (event.getType()) { case None://w w w .j a va2s . c o m this.processNoneEvent(event); break; default: log.debug("Ignore event " + event.getPath() + " with type " + event.getType()); } }
From source file:net.sf.katta.zk.ZKClient.java
License:Apache License
@Override public void process(WatchedEvent event) { // public void process(final WatcherEvent event) { // if (null == event.getPath()) { // // prohibit nullpointer (See ZOOKEEPER-77) // event.setPath("null"); // }// w w w. ja va 2 s .c om boolean stateChanged = event.getState() == KeeperState.Disconnected || event.getState() == KeeperState.Expired; boolean dataChanged = event.getType() == Watcher.Event.EventType.NodeDataChanged || event.getType() == Watcher.Event.EventType.NodeChildrenChanged || event.getType() == Watcher.Event.EventType.NodeDeleted; try { getEventLock().lock(); if (_shutdownTriggered) { LOG.debug("ignoring event '{" + event.getType() + " | " + event.getPath() + "}' since shutdown triggered"); return; } if (event.getState() == KeeperState.Expired) { processExpiration(event); } if (dataChanged) { processDataOrChildChange(event); } } finally { if (stateChanged) { getEventLock().getStateChangedCondition().signalAll(); } if (dataChanged) { getEventLock().getDataChangedCondition().signalAll(); } getEventLock().unlock(); } }