List of usage examples for org.apache.zookeeper WatchedEvent getPath
public String getPath()
From source file:org.apache.solr.common.cloud.ConnectionManager.java
License:Apache License
@Override public synchronized void process(WatchedEvent event) { if (log.isInfoEnabled()) { log.info("Watcher " + this + " name:" + name + " got event " + event + " path:" + event.getPath() + " type:" + event.getType()); }/*from w w w . jav a 2s . com*/ if (isClosed) { log.info("Client->ZooKeeper status change trigger but we are already closed"); return; } state = event.getState(); if (state == KeeperState.SyncConnected) { connected = true; clientConnected.countDown(); connectionStrategy.connected(); } else if (state == KeeperState.Expired) { connected = false; log.info( "Our previous ZooKeeper session was expired. Attempting to reconnect to recover relationship with ZooKeeper..."); try { connectionStrategy.reconnect(zkServerAddress, zkClientTimeout, this, new ZkClientConnectionStrategy.ZkUpdate() { @Override public void update(SolrZooKeeper keeper) { try { waitForConnected(Long.MAX_VALUE); } catch (Exception e1) { closeKeeper(keeper); throw new RuntimeException(e1); } log.info("Connection with ZooKeeper reestablished."); try { client.updateKeeper(keeper); } catch (InterruptedException e) { closeKeeper(keeper); Thread.currentThread().interrupt(); // we must have been asked to stop throw new RuntimeException(e); } catch (Throwable t) { closeKeeper(keeper); throw new RuntimeException(t); } if (onReconnect != null) { onReconnect.command(); } synchronized (ConnectionManager.this) { ConnectionManager.this.connected = true; } } }); } catch (Exception e) { SolrException.log(log, "", e); } log.info("Connected:" + connected); } else if (state == KeeperState.Disconnected) { log.info("zkClient has disconnected"); connected = false; connectionStrategy.disconnected(); } else { connected = false; } notifyAll(); }
From source file:org.apache.storm.zookeeper.Zookeeper.java
License:Apache License
public CuratorFramework mkClientImpl(Map conf, List<String> servers, Object port, String root, final WatcherCallBack watcher, Map authConf) { CuratorFramework fk;/* w ww.j ava2s . co m*/ if (authConf != null) { fk = Utils.newCurator(conf, servers, port, root, new ZookeeperAuthInfo(authConf)); } else { fk = Utils.newCurator(conf, servers, port, root); } fk.getCuratorListenable().addListener(new CuratorListener() { @Override public void eventReceived(CuratorFramework _fk, CuratorEvent e) throws Exception { if (e.getType().equals(CuratorEventType.WATCHED)) { WatchedEvent event = e.getWatchedEvent(); watcher.execute(event.getState(), event.getType(), event.getPath()); } } }); fk.start(); return fk; }
From source file:org.bboxdb.distribution.mode.KDtreeZookeeperAdapter.java
License:Apache License
@Override public void process(final WatchedEvent event) { // Ignore events like connected and disconnected if (event == null || event.getPath() == null) { return;/* w w w . j a v a 2 s . c om*/ } final String path = event.getPath(); if (path.equals(distributionGroupZookeeperAdapter.getClusterPath())) { // Amount of distribution groups have changed readAndHandleVersionNE(); } else if (path.endsWith(ZookeeperNodeNames.NAME_SYSTEMS)) { // Some systems were added or deleted handleSystemNodeUpdateEvent(event); } else if (path.endsWith(ZookeeperNodeNames.NAME_STATE)) { // The state of one has changed handleNodeUpdateEvent(event); } else { logger.info("Ingoring event for path: {}", path); } }
From source file:org.bboxdb.distribution.mode.KDtreeZookeeperAdapter.java
License:Apache License
/** * Handle node updates// ww w . j a v a 2s .c o m * @param event */ protected void handleNodeUpdateEvent(final WatchedEvent event) { if (rootNode == null) { logger.debug("Ignore systems update event, because root not node is null: {}", distributionGroup); return; } // Remove state node from path final String path = event.getPath().replace("/" + ZookeeperNodeNames.NAME_STATE, ""); final DistributionRegion nodeToUpdate = distributionGroupZookeeperAdapter.getNodeForPath(rootNode, path); try { if (!distributionGroupZookeeperAdapter .isDistributionGroupRegistered(rootNode.getDistributionGroupName().getFullname())) { logger.info("Distribution group was unregistered, ignore event"); return; } readDistributionGroupRecursive(path, nodeToUpdate); } catch (ZookeeperException e) { logger.warn("Got exception while updating node for: " + path, e); } }
From source file:org.bboxdb.distribution.mode.KDtreeZookeeperAdapter.java
License:Apache License
/** * Handle system update events//from w ww.j a va 2 s.co m * @param event */ protected void handleSystemNodeUpdateEvent(final WatchedEvent event) { if (rootNode == null) { logger.debug("Ignore systems update event, because root not node is null: {}", distributionGroup); return; } final String path = event.getPath().replace("/" + ZookeeperNodeNames.NAME_SYSTEMS, ""); final DistributionRegion nodeToUpdate = distributionGroupZookeeperAdapter.getNodeForPath(rootNode, path); try { updateSystemsForRegion(nodeToUpdate); } catch (ZookeeperException e) { logger.warn("Got exception while updating systems for: " + path, e); } }
From source file:org.bboxdb.distribution.zookeeper.ZookeeperClient.java
License:Apache License
/** * Process zooekeeper events//w w w . j a va2 s .c om * @param watchedEvent */ protected void processZookeeperEvent(final WatchedEvent watchedEvent) { // Ignore null parameter if (watchedEvent == null) { logger.warn("process called with an null argument"); return; } // Shutdown is pending, stop event processing if (shutdownPending == true) { return; } // Ignore type=none event if (watchedEvent.getType() == EventType.None) { return; } // Process events if (watchedEvent.getPath() != null) { if (watchedEvent.getPath().startsWith(getInstancesPath())) { readMembershipAndRegisterWatch(); } } else { logger.warn("Got unknown zookeeper event: {}", watchedEvent); } }
From source file:org.eclipse.ecf.provider.zookeeper.node.internal.ReadRoot.java
License:Open Source License
public void process(final WatchedEvent event) { ZooDiscoveryContainer.CACHED_THREAD_POOL.execute(new Runnable() { public void run() { synchronized (connectionLock) { if (watchManager.isDisposed()) return; switch (event.getState()) { case Disconnected: ReadRoot.this.isConnected = false; connect();/*from w w w .j a v a2 s . co m*/ break; case Expired: ReadRoot.this.isConnected = false; connect(); break; case SyncConnected: if (!ReadRoot.this.isConnected) { ReadRoot.this.isConnected = true; ReadRoot.this.watchManager.addZooKeeper(ReadRoot.this.readKeeper); ReadRoot.this.readKeeper.exists(INode.ROOT, ReadRoot.this, null, null); ReadRoot.this.readKeeper.getChildren(INode.ROOT, ReadRoot.this, ReadRoot.this, null); } break; // ignore @deprecated cases } switch (event.getType()) { case NodeDeleted: if (event.getPath() == null || event.getPath().equals(INode.ROOT)) break; ReadRoot.this.nodeReaders.remove(event.getPath()); break; case NodeChildrenChanged: if (ReadRoot.this.isConnected) { ReadRoot.this.readKeeper.exists(INode.ROOT, ReadRoot.this, null, null); ReadRoot.this.readKeeper.getChildren(INode.ROOT, ReadRoot.this, ReadRoot.this, null); } break; } } } }); }
From source file:org.eclipse.gyrex.cloud.internal.zk.ZooKeeperMonitor.java
License:Open Source License
@Override public void process(final WatchedEvent event) { switch (event.getType()) { case NodeChildrenChanged: childrenChanged(event.getPath()); break;//from www . ja v a2 s . c o m case NodeCreated: pathCreated(event.getPath()); break; case NodeDeleted: pathDeleted(event.getPath()); break; case NodeDataChanged: recordChanged(event.getPath()); break; case None: // state of the connection changed // TODO: how to handle/consume this event here? // our prefered way of working with ZK connect/disconnect/expired events // is using the ZKGate which has it's own connect listener (integrated into ZKBasedService) // switch (event.getState()) { // case SyncConnected: // // connection established, nothing to do because watches // // will be automatically re-registered and delivered by ZooKeeper // connected(); // break; // case Disconnected: // // session disconnected, the gate will recover // disconnected(); // break; // case Expired: // // session expired, the gate will close // expired(); // break; // } break; default: LOG.warn("Unhandled event ({}) in ({})", new Object[] { event, this }); break; } }
From source file:org.glassfish.grizzly.memcached.zookeeper.ZKClient.java
License:Open Source License
private boolean processStateChanged(final WatchedEvent event) { if (event == null) { throw new IllegalArgumentException("event must not be null"); }/*from w ww .j a v a2 s . c om*/ final Watcher.Event.KeeperState eventState = event.getState(); final String eventPath = event.getPath(); final boolean isStateChangedEvent; // state changed if (eventPath == null) { lock.lock(); try { currentState = eventState; lockCondition.signalAll(); } finally { lock.unlock(); } isStateChangedEvent = true; } else { isStateChangedEvent = false; } if (eventState == Watcher.Event.KeeperState.Expired) { try { reconnect(); } catch (Exception e) { if (logger.isLoggable(Level.SEVERE)) { logger.log(Level.SEVERE, "failed to reconnect the zookeeper server", e); } } } return isStateChangedEvent; }
From source file:org.hummer.config.WatcherAdapter.java
License:Apache License
public void process(WatchedEvent event) { WatchEvent evt = new WatchEvent(); evt.setState(event.getState().getIntValue()); evt.setType(event.getType().getIntValue()); evt.setArg(event.getPath()); innerWatcher.onEvent(evt);//from w w w . ja v a 2 s .c om }