List of usage examples for org.apache.zookeeper WatchedEvent getState
public KeeperState getState()
From source file:org.apache.hadoop.hbase.zookeeper.ZooKeeperWrapper.java
License:Apache License
/** * This is the primary ZK watcher/*ww w .j a v a 2 s .c o m*/ * @see org.apache.zookeeper.Watcher#process(org.apache.zookeeper.WatchedEvent) */ @Override public synchronized void process(WatchedEvent event) { LOG.debug("<" + instanceName + "> Received ZK WatchedEvent: " + "[path=" + event.getPath() + "] " + "[state=" + event.getState().toString() + "] " + "[type=" + event.getType().toString() + "]"); if (event.getType() == EventType.None) { if (event.getState() == KeeperState.Expired) { this.abort("ZooKeeper Session Expiration, aborting server", new KeeperException.SessionExpiredException()); } else if (event.getState() == KeeperState.Disconnected) { LOG.warn("Disconnected from ZooKeeper"); } else if (event.getState() == KeeperState.SyncConnected) { LOG.info("Reconnected to ZooKeeper"); } return; } for (Watcher w : listeners) { try { w.process(event); } catch (Throwable t) { LOG.error("<" + instanceName + ">" + " Sub-ZK Watcher threw an exception " + "in process()", t); } } }
From source file:org.apache.hadoop.hdfs.server.namenode.bookkeeper.zk.ConnectionWatcher.java
License:Apache License
@Override public void process(WatchedEvent event) { if (Event.KeeperState.SyncConnected.equals(event.getState())) { connectLatch.countDown();//from w w w . j a v a 2 s .co m LOG.info("Connected to ZooKeeper"); } }
From source file:org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.java
License:Apache License
@VisibleForTesting @Private// ww w . j a va 2s . com @Unstable public synchronized void processWatchEvent(WatchedEvent event) throws Exception { Event.EventType eventType = event.getType(); LOG.info("Watcher event type: " + eventType + " with state:" + event.getState() + " for path:" + event.getPath() + " for " + this); if (eventType == Event.EventType.None) { // the connection state has changed switch (event.getState()) { case SyncConnected: LOG.info("ZKRMStateStore Session connected"); if (oldZkClient != null) { // the SyncConnected must be from the client that sent Disconnected zkClient = oldZkClient; oldZkClient = null; ZKRMStateStore.this.notifyAll(); LOG.info("ZKRMStateStore Session restored"); } break; case Disconnected: LOG.info("ZKRMStateStore Session disconnected"); oldZkClient = zkClient; zkClient = null; break; case Expired: // the connection got terminated because of session timeout // call listener to reconnect LOG.info("ZKRMStateStore Session expired"); createConnection(); break; default: LOG.error("Unexpected Zookeeper" + " watch event state: " + event.getState()); break; } } }
From source file:org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.java
License:Apache License
@VisibleForTesting @Private// ww w . ja va2 s .c om @Unstable public synchronized void processWatchEvent(ZooKeeper zk, WatchedEvent event) throws Exception { // only process watcher event from current ZooKeeper Client session. if (zk != activeZkClient) { LOG.info("Ignore watcher event type: " + event.getType() + " with state:" + event.getState() + " for path:" + event.getPath() + " from old session"); return; } Event.EventType eventType = event.getType(); LOG.info("Watcher event type: " + eventType + " with state:" + event.getState() + " for path:" + event.getPath() + " for " + this); if (eventType == Event.EventType.None) { // the connection state has changed switch (event.getState()) { case SyncConnected: LOG.info("ZKRMStateStore Session connected"); if (zkClient == null) { // the SyncConnected must be from the client that sent Disconnected zkClient = activeZkClient; ZKRMStateStore.this.notifyAll(); LOG.info("ZKRMStateStore Session restored"); } break; case Disconnected: LOG.info("ZKRMStateStore Session disconnected"); zkClient = null; break; case Expired: // the connection got terminated because of session timeout // call listener to reconnect LOG.info("ZKRMStateStore Session expired"); createConnection(); break; default: LOG.error("Unexpected Zookeeper" + " watch event state: " + event.getState()); break; } } }
From source file:org.apache.hedwig.server.netty.PubSubServer.java
License:Apache License
protected void instantiateZookeeperClient() throws Exception { if (!conf.isStandalone()) { final CountDownLatch signalZkReady = new CountDownLatch(1); zk = new ZooKeeper(conf.getZkHost(), conf.getZkTimeout(), new Watcher() { @Override//from www . j a v a 2 s. c om public void process(WatchedEvent event) { if (Event.KeeperState.SyncConnected.equals(event.getState())) { signalZkReady.countDown(); } } }); // wait until connection is effective if (!signalZkReady.await(conf.getZkTimeout() * 2, TimeUnit.MILLISECONDS)) { logger.error("Could not establish connection with ZooKeeper after zk_timeout*2 = " + conf.getZkTimeout() * 2 + " ms. (Default value for zk_timeout is 2000)."); throw new Exception("Could not establish connection with ZooKeeper after zk_timeout*2 = " + conf.getZkTimeout() * 2 + " ms. (Default value for zk_timeout is 2000)."); } } }
From source file:org.apache.helix.manager.zk.zookeeper.ZkClient.java
License:Apache License
@Override 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() == Event.EventType.NodeDataChanged || event.getType() == Event.EventType.NodeDeleted || event.getType() == Event.EventType.NodeCreated || event.getType() == Event.EventType.NodeChildrenChanged; getEventLock().lock();//www . ja v a2 s . c o m 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(); // update state change counter. recordStateChange(stateChanged, dataChanged); LOG.debug("Leaving process event"); } }
From source file:org.apache.helix.manager.zk.zookeeper.ZkClient.java
License:Apache License
private void processStateChanged(WatchedEvent event) { LOG.info("zookeeper state changed (" + event.getState() + ")"); setCurrentState(event.getState());//from w w w . j a va 2 s .c o m if (getShutdownTrigger()) { return; } fireStateChangedEvent(event.getState()); if (event.getState() == KeeperState.Expired) { try { reconnect(); fireNewSessionEvents(); } catch (final Exception e) { LOG.info("Unable to re-establish connection. Notifying consumer of the following exception: ", e); fireSessionEstablishmentError(e); } } }
From source file:org.apache.hms.controller.Controller.java
License:Apache License
public void process(WatchedEvent event) { 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 running = false;/*from ww w .j a v a2s . c o m*/ commandHandler.stop(); break; } } }
From source file:org.apache.niolex.zookeeper.core.ZKConnector.java
License:Apache License
/** * Override super method/*from w w w . j av a 2 s . c om*/ * @see org.apache.zookeeper.Watcher#process(org.apache.zookeeper.WatchedEvent) */ @Override public void process(WatchedEvent event) { LOG.info("ZK Connection status changed to: {}.", event.getState()); switch (event.getState()) { case SyncConnected: latch.countDown(); break; case Expired: reconnect(); break; } }
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 ww w . ja va 2 s. c o m 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(); }