List of usage examples for org.apache.zookeeper WatchedEvent getPath
public String getPath()
From source file:org.apache.airavata.orchestrator.core.impl.GFACPassiveJobSubmitter.java
License:Apache License
synchronized public void process(WatchedEvent event) { logger.info(getClass().getName() + event.getPath()); logger.info(getClass().getName() + event.getType()); synchronized (mutex) { switch (event.getState()) { case SyncConnected: mutex.notify();//from ww w . ja va 2s . c o m } switch (event.getType()) { case NodeCreated: mutex.notify(); break; } } }
From source file:org.apache.bookkeeper.benchmark.BenchReadThroughputLatency.java
License:Apache License
@SuppressWarnings("deprecation") public static void main(String[] args) throws Exception { Options options = new Options(); options.addOption("ledger", true, "Ledger to read. If empty, read all ledgers which come available. " + " Cannot be used with -listen"); options.addOption("listen", true, "Listen for creation of <arg> ledgers, and read each one fully"); options.addOption("password", true, "Password used to access ledgers (default 'benchPasswd')"); options.addOption("zookeeper", true, "Zookeeper ensemble, default \"localhost:2181\""); options.addOption("sockettimeout", true, "Socket timeout for bookkeeper client. In seconds. Default 5"); options.addOption("help", false, "This message"); CommandLineParser parser = new PosixParser(); CommandLine cmd = parser.parse(options, args); if (cmd.hasOption("help")) { usage(options);/*from w w w. jav a 2 s . c o m*/ System.exit(-1); } final String servers = cmd.getOptionValue("zookeeper", "localhost:2181"); final byte[] passwd = cmd.getOptionValue("password", "benchPasswd").getBytes(UTF_8); final int sockTimeout = Integer.parseInt(cmd.getOptionValue("sockettimeout", "5")); if (cmd.hasOption("ledger") && cmd.hasOption("listen")) { LOG.error("Cannot used -ledger and -listen together"); usage(options); System.exit(-1); } final AtomicInteger ledger = new AtomicInteger(0); final AtomicInteger numLedgers = new AtomicInteger(0); if (cmd.hasOption("ledger")) { ledger.set(Integer.parseInt(cmd.getOptionValue("ledger"))); } else if (cmd.hasOption("listen")) { numLedgers.set(Integer.parseInt(cmd.getOptionValue("listen"))); } else { LOG.error("You must use -ledger or -listen"); usage(options); System.exit(-1); } final CountDownLatch shutdownLatch = new CountDownLatch(1); final CountDownLatch connectedLatch = new CountDownLatch(1); final String nodepath = String.format("/ledgers/L%010d", ledger.get()); final ClientConfiguration conf = new ClientConfiguration(); conf.setReadTimeout(sockTimeout).setZkServers(servers); final ZooKeeper zk = new ZooKeeper(servers, 3000, new Watcher() { public void process(WatchedEvent event) { if (event.getState() == Event.KeeperState.SyncConnected && event.getType() == Event.EventType.None) { connectedLatch.countDown(); } } }); final Set<String> processedLedgers = new HashSet<String>(); try { zk.register(new Watcher() { public void process(WatchedEvent event) { try { if (event.getState() == Event.KeeperState.SyncConnected && event.getType() == Event.EventType.None) { connectedLatch.countDown(); } else if (event.getType() == Event.EventType.NodeCreated && event.getPath().equals(nodepath)) { readLedger(conf, ledger.get(), passwd); shutdownLatch.countDown(); } else if (event.getType() == Event.EventType.NodeChildrenChanged) { if (numLedgers.get() < 0) { return; } List<String> children = zk.getChildren("/ledgers", true); List<String> ledgers = new ArrayList<String>(); for (String child : children) { if (LEDGER_PATTERN.matcher(child).find()) { ledgers.add(child); } } for (String ledger : ledgers) { synchronized (processedLedgers) { if (processedLedgers.contains(ledger)) { continue; } final Matcher m = LEDGER_PATTERN.matcher(ledger); if (m.find()) { int ledgersLeft = numLedgers.decrementAndGet(); final Long ledgerId = Long.valueOf(m.group(1)); processedLedgers.add(ledger); Thread t = new Thread() { public void run() { readLedger(conf, ledgerId, passwd); } }; t.start(); if (ledgersLeft <= 0) { shutdownLatch.countDown(); } } else { LOG.error("Cant file ledger id in {}", ledger); } } } } else { LOG.warn("Unknown event {}", event); } } catch (Exception e) { LOG.error("Exception in watcher", e); } } }); connectedLatch.await(); if (ledger.get() != 0) { if (zk.exists(nodepath, true) != null) { readLedger(conf, ledger.get(), passwd); shutdownLatch.countDown(); } else { LOG.info("Watching for creation of" + nodepath); } } else { zk.getChildren("/ledgers", true); } shutdownLatch.await(); LOG.info("Shutting down"); } finally { zk.close(); } }
From source file:org.apache.bookkeeper.bookie.Bookie.java
License:Apache License
private void instantiateZookeeperClient(int port, String zkServers) throws IOException { if (zkServers == null) { LOG.warn(/*from ww w.ja v a 2s . c om*/ "No ZK servers passed to Bookie constructor so BookKeeper clients won't know about this server!"); zk = null; return; } // Create the ZooKeeper client instance zk = new ZooKeeper(zkServers, 10000, new Watcher() { @Override public void process(WatchedEvent event) { // TODO: handle session disconnects and expires if (LOG.isDebugEnabled()) { LOG.debug("Process: " + event.getType() + " " + event.getPath()); } } }); // Create the ZK ephemeral node for this Bookie. try { zk.create(BOOKIE_REGISTRATION_PATH + InetAddress.getLocalHost().getHostAddress() + ":" + port, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); } catch (Exception e) { LOG.fatal("ZK exception registering ephemeral Znode for Bookie!", e); // Throw an IOException back up. This will cause the Bookie // constructor to error out. Alternatively, we could do a System // exit here as this is a fatal error. throw new IOException(e); } }
From source file:org.apache.bookkeeper.client.BookKeeper.java
License:Apache License
/** * Create a bookkeeper client. A zookeeper client and a client socket factory * will be instantiated as part of this constructor. * // w w w. j a v a 2 s. co m * @param servers * A list of one of more servers on which zookeeper is running. The * client assumes that the running bookies have been registered with * zookeeper under the path * {@link BookieWatcher#BOOKIE_REGISTRATION_PATH} * @throws IOException * @throws InterruptedException * @throws KeeperException */ public BookKeeper(String servers) throws IOException, InterruptedException, KeeperException { this(new ZooKeeper(servers, 10000, new Watcher() { @Override public void process(WatchedEvent event) { // TODO: handle session disconnects and expires if (LOG.isDebugEnabled()) { LOG.debug("Process: " + event.getType() + " " + event.getPath()); } } }), new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); ownZKHandle = true; ownChannelFactory = true; }
From source file:org.apache.bookkeeper.meta.AbstractZkLedgerManager.java
License:Apache License
@Override public void process(WatchedEvent event) { LOG.info("Received watched event {} from zookeeper based ledger manager.", event); if (Event.EventType.None == event.getType()) { /** TODO: BOOKKEEPER-537 to handle expire events. if (Event.KeeperState.Expired == event.getState()) { LOG.info("ZooKeeper client expired on ledger manager."); Set<Long> keySet = new HashSet<Long>(listeners.keySet()); for (Long lid : keySet) {/* w ww. ja va 2 s . co m*/ scheduler.submit(new ReadLedgerMetadataTask(lid)); LOG.info("Re-read ledger metadata for {} after zookeeper session expired.", lid); } } **/ return; } String path = event.getPath(); if (null == path) { return; } final long ledgerId; try { ledgerId = getLedgerId(event.getPath()); } catch (IOException ioe) { LOG.info("Received invalid ledger path {} : ", event.getPath(), ioe); return; } switch (event.getType()) { case NodeDeleted: Set<LedgerMetadataListener> listenerSet = listeners.get(ledgerId); if (null != listenerSet) { synchronized (listenerSet) { if (LOG.isDebugEnabled()) { LOG.debug("Removed ledger metadata listeners on ledger {} : {}", ledgerId, listenerSet); } for (LedgerMetadataListener l : listenerSet) { l.onChanged(ledgerId, null); } listeners.remove(ledgerId, listenerSet); } } else { if (LOG.isDebugEnabled()) { LOG.debug("No ledger metadata listeners to remove from ledger {} after it's deleted.", ledgerId); } } break; case NodeDataChanged: new ReadLedgerMetadataTask(ledgerId).run(); break; default: LOG.debug("Received event {} on {}.", event.getType(), event.getPath()); break; } }
From source file:org.apache.bookkeeper.replication.TestLedgerUnderreplicationManager.java
License:Apache License
/** * Test enabling the ledger re-replication. After enableLedegerReplication, * should continue getLedgerToRereplicate() task *//*from ww w .j a v a 2s.com*/ @Test(timeout = 20000) public void testEnableLedgerReplication() throws Exception { isLedgerReplicationDisabled = true; final LedgerUnderreplicationManager replicaMgr = lmf1.newLedgerUnderreplicationManager(); // simulate few urLedgers before disabling final Long ledgerA = 0xfeadeefdacL; final String missingReplica = "localhost:3181"; try { replicaMgr.markLedgerUnderreplicated(ledgerA, missingReplica); } catch (UnavailableException e) { LOG.debug("Unexpected exception while marking urLedger", e); fail("Unexpected exception while marking urLedger" + e.getMessage()); } // disabling replication replicaMgr.disableLedgerReplication(); LOG.debug("Disabled Ledeger Replication"); String znodeA = getUrLedgerZnode(ledgerA); final CountDownLatch znodeLatch = new CountDownLatch(2); String urledgerA = StringUtils.substringAfterLast(znodeA, "/"); String urLockLedgerA = basePath + "/locks/" + urledgerA; zkc1.exists(urLockLedgerA, new Watcher() { @Override public void process(WatchedEvent event) { if (event.getType() == EventType.NodeCreated) { znodeLatch.countDown(); LOG.debug("Recieved node creation event for the zNodePath:" + event.getPath()); } } }); // getLedgerToRereplicate is waiting until enable rereplication Thread thread1 = new Thread() { @Override public void run() { try { Long lA = replicaMgr.getLedgerToRereplicate(); assertEquals("Should be the ledger I just marked", lA, ledgerA); isLedgerReplicationDisabled = false; znodeLatch.countDown(); } catch (UnavailableException e) { LOG.debug("Unexpected exception while marking urLedger", e); isLedgerReplicationDisabled = false; } } }; thread1.start(); try { assertFalse("shouldn't complete", znodeLatch.await(1, TimeUnit.SECONDS)); assertTrue("Ledger replication is not disabled!", isLedgerReplicationDisabled); assertEquals("Failed to disable ledger replication!", 2, znodeLatch.getCount()); replicaMgr.enableLedgerReplication(); znodeLatch.await(5, TimeUnit.SECONDS); LOG.debug("Enabled Ledeger Replication"); assertTrue("Ledger replication is not disabled!", !isLedgerReplicationDisabled); assertEquals("Failed to disable ledger replication!", 0, znodeLatch.getCount()); } finally { thread1.interrupt(); } }
From source file:org.apache.bookkeeper.test.CloseTest.java
License:Apache License
/** * Watcher method. //from w ww .j a v a 2 s. c o m */ synchronized public void process(WatchedEvent event) { LOG.info("Process: " + event.getType() + " " + event.getPath()); }
From source file:org.apache.bookkeeper.tools.BookKeeperTools.java
License:Apache License
/** * Constructor that takes in a ZooKeeper servers connect string so we know * how to connect to ZooKeeper to retrieve information about the BookKeeper * cluster. We need this before we can do any type of admin operations on * the BookKeeper cluster./* w w w .j a v a 2s . co m*/ * * @param zkServers * Comma separated list of hostname:port pairs for the ZooKeeper * servers cluster. * @throws IOException * Throws this exception if there is an error instantiating the * ZooKeeper client. * @throws InterruptedException * Throws this exception if there is an error instantiating the * BookKeeper client. * @throws KeeperException * Throws this exception if there is an error instantiating the * BookKeeper client. */ public BookKeeperTools(String zkServers) throws IOException, InterruptedException, KeeperException { // Create the ZooKeeper client instance zk = new ZooKeeper(zkServers, 10000, new Watcher() { @Override public void process(WatchedEvent event) { if (LOG.isDebugEnabled()) { LOG.debug("Process: " + event.getType() + " " + event.getPath()); } } }); // Create the BookKeeper client instance bkc = new BookKeeper(zk); }
From source file:org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase.java
License:Apache License
@Override public void process(WatchedEvent event) { // If event type is NONE, this is a connection status change if (event.getType() != EventType.None) { LOG.debug("Received event: {}, path: {} from ZooKeeper server", event.getType(), event.getPath()); getEventCounter(event.getType()).inc(); // notify the child watchers notifyEvent(event);//w w w . j av a2s . co m return; } getStateCounter(event.getState()).inc(); LOG.debug("Received {} from ZooKeeper server", event.getState()); // TODO: Needs to handle AuthFailed, SaslAuthenticated events switch (event.getState()) { case SyncConnected: LOG.info("ZooKeeper client is connected now."); clientConnectLatch.countDown(); break; case Disconnected: LOG.info( "ZooKeeper client is disconnected from zookeeper now, but it is OK unless we received EXPIRED event."); break; case Expired: clientConnectLatch = new CountDownLatch(1); LOG.error("ZooKeeper client connection to the ZooKeeper server has expired!"); break; default: // do nothing break; } // notify the child watchers notifyEvent(event); }
From source file:org.apache.camel.component.zookeeper.operations.FutureEventDrivenOperation.java
License:Apache License
public void process(WatchedEvent event) { this.event = event; EventType received = event.getType(); if (LOG.isDebugEnabled()) { LOG.debug(format("Recieved event of type %s for node '%s'", received, event.getPath())); }//from w w w .java2s .c o m for (EventType watched : awaitedTypes) { if (watched.equals(received)) { result = getResult(); waitForAnyWatchedType.countDown(); } } if (LOG.isTraceEnabled() && waitForAnyWatchedType.getCount() > 0) { StringBuilder b = new StringBuilder(); for (EventType type : awaitedTypes) { b.append(type).append(", "); } if (b.length() > 0) { b.setLength(b.length() - 2); } LOG.trace(String.format("Recieved event of type %s did not match any watched types %s", received, awaitedTypes)); } }