List of usage examples for org.apache.zookeeper WatchedEvent getType
public EventType getType()
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();//from w w w. j ava 2 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 a2 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();//w w w. j a v a 2s . 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.watcher.ZookeeperWatcher.java
License:Apache License
@Override public void process(WatchedEvent event) { if (null == zk_client) return;//from www .jav a 2 s .c o m try { Thread.sleep(100); /* ? */ zk_client.exists(nodePath, this); EventType eventType = event.getType(); switch (eventType) { case NodeCreated: logger.info("create node-->" + event.getPath()); break; case NodeDataChanged: final String nodePathValue = new String(zk_client.getData(nodePath, false, null)); RegisterDataSource.register(nodePathValue, "zookeeper"); logger.info("change node data-->" + event.getPath()); break; case NodeChildrenChanged: break; case NodeDeleted: default: break; } } catch (Exception e) { throw new ConnectionException(e.toString()); } }
From source file:com.smartitengineering.cms.spi.lock.impl.distributed.ZKLock.java
License:Open Source License
protected boolean tryRemoteLock(String lockId, final long availableMillisForRemoteLock) throws IllegalStateException, InterruptedException { final LocalLockRegistrar registrar = config.getRegistrar(); final ZooKeeper keeper = config.getZooKeeper(); final String node = getNode(); if (logger.isDebugEnabled()) { logger.debug("Attained local lock " + lockId); }/*from w ww . ja va 2s. com*/ try { if (StringUtils.isNotBlank(lockId)) { keeper.create(node, org.apache.commons.codec.binary.StringUtils.getBytesUtf8(config.getNodeId()), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); keeper.exists(node, this); localLockId = lockId; return true; } else { return false; } } catch (KeeperException ke) { if (ke.code() == KeeperException.Code.NODEEXISTS) { logger.debug("Lock alrady exists!"); if (availableMillisForRemoteLock > 0) { synchronized (ZKLock.this) { try { keeper.exists(node, new Watcher() { public void process(WatchedEvent event) { if (event.getType().equals(Event.EventType.NodeDeleted)) { synchronized (ZKLock.this) { ZKLock.this.notifyAll(); } } } }); } catch (Exception ex) { logger.error("Could not attach watcher", ex); } final long remoteStart = System.currentTimeMillis(); ZKLock.this.wait(availableMillisForRemoteLock); return tryRemoteLock(lockId, availableMillisForRemoteLock - (System.currentTimeMillis() - remoteStart)); } } else { registrar.unlock(key, lockId); return false; } } else { logger.error(ke.getMessage(), ke); throw new IllegalStateException(ke); } } catch (Exception ex) { registrar.unlock(key, lockId); logger.error(ex.getMessage(), ex); throw new IllegalStateException(ex); } }
From source file:com.smartitengineering.cms.spi.lock.impl.distributed.ZKLock.java
License:Open Source License
public void process(WatchedEvent event) { if (!event.getType().equals(Event.EventType.NodeDeleted)) { logger.warn("Remote lock changed unexpectedly! This may cause system inconsistency"); }/*from w ww . ja va2s . com*/ }
From source file:com.sonian.elasticsearch.zookeeper.client.ZooKeeperClientService.java
License:Apache License
@Override public Set<String> listNodes(final String path, final NodeListChangedListener nodeListChangedListener) throws InterruptedException { if (!lifecycle.started()) { throw new ZooKeeperClientException("listNodes is called after service was stopped"); }/*from w ww.ja v a 2 s . c o m*/ Set<String> res = new HashSet<String>(); final Watcher watcher = (nodeListChangedListener != null) ? new Watcher() { @Override public void process(WatchedEvent event) { if (event.getType() == Watcher.Event.EventType.NodeChildrenChanged) { nodeListChangedListener.onNodeListChanged(); } } } : null; try { List<String> children = zooKeeperCall("Cannot list nodes", new Callable<List<String>>() { @Override public List<String> call() throws Exception { return zooKeeper.getChildren(path, watcher); } }); if (children == null) { return null; } for (String childPath : children) { res.add(extractLastPart(childPath)); } return res; } catch (KeeperException e) { throw new ZooKeeperClientException("Cannot list nodes", e); } }
From source file:com.sonian.elasticsearch.zookeeper.client.ZooKeeperClientService.java
License:Apache License
private Watcher wrapNodeListener(final NodeListener nodeListener) { if (nodeListener != null) { return new Watcher() { @Override//from w w w . j a v a 2 s . c o m public void process(WatchedEvent event) { switch (event.getType()) { case NodeCreated: nodeListener.onNodeCreated(event.getPath()); break; case NodeDeleted: nodeListener.onNodeDeleted(event.getPath()); break; case NodeDataChanged: nodeListener.onNodeDataChanged(event.getPath()); break; } } }; } else { return null; } }
From source file:com.splicemachine.ddl.ZooKeeperDDLWatchChecker.java
License:Apache License
@Override public boolean initialize(final CommunicationListener changeIdListener) throws IOException { this.id = zkClient.registerThisServer(); if (id == null) return false; //not a server, so inform the world if (id.startsWith("/")) id = id.substring(1); //strip the leading / to make sure that we register properly changeIdWatcher = new Watcher() { @Override//from ww w . ja v a 2s.c o m public void process(WatchedEvent watchedEvent) { if (watchedEvent.getType().equals(Event.EventType.NodeChildrenChanged)) { if (LOG.isTraceEnabled()) LOG.trace("Received watch event, signalling refresh"); changeIdListener.onCommunicationEvent(watchedEvent.getPath()); } } }; return true; }
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 va 2 s . co 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"); } }