List of usage examples for org.apache.zookeeper WatchedEvent getPath
public String getPath()
From source file:com.alibaba.jstorm.zk.Zookeeper.java
License:Apache License
/** * connect ZK, register Watch/unhandle Watch * // w w w . j a v a2s .co m * @return */ public CuratorFramework mkClient(Map conf, List<String> servers, Object port, String root, final WatcherCallBack watcher) { CuratorFramework 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.getUnhandledErrorListenable().addListener(new UnhandledErrorListener() { @Override public void unhandledError(String msg, Throwable error) { String errmsg = "Unrecoverable Zookeeper error, halting process: " + msg; LOG.error(errmsg, error); JStormUtils.halt_process(1, "Unrecoverable Zookeeper error"); } }); fk.start(); return fk; }
From source file:com.alibaba.otter.shared.common.utils.zookeeper.ZkClientx.java
License:Apache License
public void process(WatchedEvent event) { LOG.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();// ww w . j a v a 2 s .c om try { // We might have to install child change event listener if a new node was created if (getShutdownTrigger()) { LOG.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 // TODO PVo write a test for this 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(); LOG.debug("Leaving process event"); } }
From source file:com.alibaba.otter.shared.common.utils.zookeeper.ZkClientx.java
License:Apache License
private void processDataOrChildChange(WatchedEvent event) { final String path = event.getPath(); if (event.getType() == EventType.NodeChildrenChanged || event.getType() == EventType.NodeCreated || event.getType() == EventType.NodeDeleted) { Set<IZkChildListener> childListeners = _childListener.get(path); if (childListeners != null && !childListeners.isEmpty()) { fireChildChangedEvents(path, childListeners); }//from www .ja va 2 s. c o m } if (event.getType() == EventType.NodeDataChanged || event.getType() == EventType.NodeDeleted || event.getType() == EventType.NodeCreated) { Set<IZkDataListener> listeners = _dataListener.get(path); if (listeners != null && !listeners.isEmpty()) { fireDataChangedEvents(event.getPath(), listeners); } } }
From source file:com.alibaba.wasp.zookeeper.ZooKeeperWatcher.java
License:Apache License
/** * Method called from ZooKeeper for events and connection status. * <p>/*from ww w . ja va2s. c om*/ * Valid events are passed along to listeners. Connection status changes are * dealt with locally. */ @Override public void process(WatchedEvent event) { LOG.debug(prefix("Received ZooKeeper Event, " + "type=" + event.getType() + ", " + "state=" + event.getState() + ", " + "path=" + event.getPath())); switch (event.getType()) { // If event type is NONE, this is a connection status change case None: { connectionEvent(event); break; } // Otherwise pass along to the listeners case NodeCreated: { for (ZooKeeperListener listener : listeners) { listener.nodeCreated(event.getPath()); } break; } case NodeDeleted: { for (ZooKeeperListener listener : listeners) { listener.nodeDeleted(event.getPath()); } break; } case NodeDataChanged: { for (ZooKeeperListener listener : listeners) { listener.nodeDataChanged(event.getPath()); } break; } case NodeChildrenChanged: { for (ZooKeeperListener listener : listeners) { listener.nodeChildrenChanged(event.getPath()); } break; } } }
From source file:com.amazonaws.services.kinesis.stormspout.state.zookeeper.ZookeeperStateManager.java
License:Open Source License
@Override public synchronized void process(WatchedEvent event) { checkState(active, "Cannot process events if state is not active (a ZK" + " connection is necessary)."); // Re-hook the watcher. // Ordering the statements this way will ensure that no ZK shardList update is missed. // Since bootstrapStateFromZookeeper does its own getShardList(null) call, and the // call is after the re-hook, then any modification made in between the time the process() // function is called and the re-hook is made is captured by bootstrapStateFromZookeeper. // Note that this could end up in multiple calls being made for the same shardList update. try {/*from ww w. j ava2 s . co m*/ zk.watchShardList(this); } catch (Exception e) { // Failure is fatal for the task (and it's been retried, so it's indicative of a // bigger Zookeeper/global state issue). LOG.error(this + " failure to re-attach event handler for ZK node " + event.getPath(), e); throw new KinesisSpoutException(e); } // If we are handling a shardList modification, then most probably another task handled // a reshard, and we need to sync with the state in ZK. if (event.getType() == EventType.NodeDataChanged && zk.isShardList(event.getPath())) { LOG.info(this + " detected change in shardList. Committing current shard state and " + "reinitializing spout task from ZK."); commitShardStates(); bootstrapStateFromZookeeper(); } }
From source file:com.anteam.demo.zookeeper.DataMonitor.java
License:Apache License
@SuppressWarnings("deprecation") public void process(WatchedEvent event) { System.out.println("----------------------------------------"); System.out.println("event:" + event); String path = event.getPath(); System.out.println("DataMonitor.process.path:" + path); 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;/* w ww . jav a2 s.c om*/ listener.closing(KeeperException.Code.SessionExpired); break; default: 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.api6.zkclient.watcher.ZKWatcher.java
License:Apache License
/** * ?//from www .j a v a 2 s. co m * @see org.apache.zookeeper.Watcher#process(org.apache.zookeeper.WatchedEvent) */ @Override public void process(WatchedEvent event) { LOG.debug("ZooKeeper event is arrived [" + event + " ]..."); EventType eventType = event.getType(); //? boolean stateChanged = event.getPath() == null; // boolean znodeChanged = event.getPath() != null; //??? boolean nodeChanged = eventType == EventType.NodeDataChanged || eventType == EventType.NodeDeleted || eventType == EventType.NodeCreated; //??????????? boolean childChanged = eventType == EventType.NodeDeleted || eventType == EventType.NodeCreated || eventType == EventType.NodeChildrenChanged; client.acquireEventLock(); try { if (client.getShutdownTrigger()) { LOG.debug("client will shutdown,ignore the event [" + eventType + " | " + event.getPath() + "]"); return; } if (stateChanged) {//ZooKeeper??? process.processStateChanged(event); } if (nodeChanged) {//?????? process.processNodeChanged(event); } if (childChanged) {//?????????? process.processChildChanged(event); } } finally { if (stateChanged) { client.getEventLock().getStateChangedCondition().signalAll(); // ????watch. // ???????? // ???? if (event.getState() == KeeperState.Expired) { client.getEventLock().getNodeEventCondition().signalAll(); client.getEventLock().getNodeOrChildChangedCondition().signalAll(); // ???? process.processAllNodeAndChildListeners(event); } } if (znodeChanged) { client.getEventLock().getNodeEventCondition().signalAll(); } if (nodeChanged || childChanged) { client.getEventLock().getNodeOrChildChangedCondition().signalAll(); } client.releaseEventLock(); } }
From source file:com.api6.zkclient.watcher.ZKWatcherProcess.java
License:Apache License
/** * ???// w w w . j a v a 2 s . co m * @param event * @return void */ public void processChildChanged(final WatchedEvent event) { final String path = event.getPath(); final Set<ZKListener> listeners = client.getChildListenerMap().get(path); //???? submitChildEvent(listeners, path, event.getType()); }
From source file:com.api6.zkclient.watcher.ZKWatcherProcess.java
License:Apache License
/** * ???// w ww. ja v a 2 s . co m * @param event * @return void */ public void processNodeChanged(final WatchedEvent event) { final String path = event.getPath(); final EventType eventType = event.getType(); final Set<ZKListener> listeners = client.getNodeListenerMap().get(path); if (listeners == null || listeners.isEmpty()) { return; } //listenersZKChildDataListener? //?????? //????ZKChildDataListener final Set<ZKListener> childDataChangeListners = new CopyOnWriteArraySet<>(); final Set<ZKListener> nodeListners = new CopyOnWriteArraySet<>(); classifyListeners(listeners, nodeListners, childDataChangeListners); //???? submitNodeEvent(nodeListners, childDataChangeListners, path, eventType); //???? if (eventType == EventType.NodeDataChanged) { //???? submitChildDataEvent(childDataChangeListners, path, eventType); } }
From source file:com.att.nsa.zkUtils.ZkWatcher.java
License:Open Source License
public static Watcher getLoggingWatcher(final String title, final Logger log) { return new Watcher() { @Override//from w w w . j a v a 2s . co m public void process(WatchedEvent event) { log.info("ZK watch for " + title + ": " + event.getType() + " @ " + event.getPath()); } }; }