watchManager.defaultWatcher = watcher; ConnectStringParser connectStringParser = new ConnectStringParser( connectString); hostProvider = aHostProvider; cnxn = new ClientCnxn(connectStringParser.getChrootPath(), hostProvider, sessionTimeout, this, watchManager, getClientCnxnSocket(), sessionId, sessionPasswd, canBeReadOnly);
private static HostProvider createDefaultHostProvider(String connectString) { return new StaticHostProvider( new ConnectStringParser(connectString).getServerAddresses()); }
ConnectStringParser connectStringParser = new ConnectStringParser( connectString); HostProvider hostProvider = new StaticHostProvider( connectStringParser.getServerAddresses()); cnxn = new ClientCnxn(connectStringParser.getChrootPath(), hostProvider, sessionTimeout, this, watchManager, getClientCnxnSocket(), canBeReadOnly);
@Test public void testSingleServerChrootPath(){ String chrootPath = "/hallo/welt"; String servers = "10.10.10.1"; assertChrootPath(chrootPath, new ConnectStringParser(servers+chrootPath)); servers = "[2001:db8:1::242:ac11:2]"; assertChrootPath(chrootPath, new ConnectStringParser(servers+chrootPath)); }
@Override public String getConnectionString() { StringBuilder connectStringBuilder = new StringBuilder(); SortedSet<String> addresses = new TreeSet<>(); for (InetSocketAddress hostAndPort : _connectStringParser.getServerAddresses()) { try { for (InetAddress address : _resolver.lookupAllHostAddr(hostAndPort.getHostName())) { addresses.add(HostAndPort.fromParts(address.getHostAddress(), hostAndPort.getPort()).toString()); } } catch (UnknownHostException e) { // Leave unresolvable host in connect string as-is. addresses.add(hostAndPort.toString()); } } Joiner.on(',').appendTo(connectStringBuilder, addresses); if (_connectStringParser.getChrootPath() != null) { connectStringBuilder.append(_connectStringParser.getChrootPath()); } return connectStringBuilder.toString(); }
private void assertChrootPath(String expected, ConnectStringParser parser){ Assert.assertEquals(expected, parser.getChrootPath()); } }
ConnectStringParser connectStringParser = new ConnectStringParser( connectString); HostProvider hostProvider = new StaticHostProvider( connectStringParser.getServerAddresses()); cnxn = new ClientCnxn(connectStringParser.getChrootPath(), hostProvider, sessionTimeout, this, watchManager, getClientCnxnSocket(), sessionId, sessionPasswd, canBeReadOnly);
@Test public void testMultipleServersChrootPath(){ String chrootPath = "/hallo/welt"; String servers = "10.10.10.1,10.10.10.2"; assertChrootPath(chrootPath, new ConnectStringParser(servers+chrootPath)); servers = "[2001:db8:1::242:ac11:2]:2181,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:5678"; assertChrootPath(chrootPath, new ConnectStringParser(servers+chrootPath)); }
watchManager = defaultWatchManager(); watchManager.defaultWatcher = watcher; ConnectStringParser connectStringParser = new ConnectStringParser( connectString); hostProvider = aHostProvider; cnxn = createConnection(connectStringParser.getChrootPath(), hostProvider, sessionTimeout, this, watchManager, getClientCnxnSocket(), canBeReadOnly);
protected ZookeeperMonitor(Connection connection, String[] monitorTargets, boolean useRegExp, Sink sink, ExecutorService executor, boolean treatFailureAsError, long allowedFailures) { super(connection, monitorTargets, useRegExp, sink, executor, treatFailureAsError, allowedFailures); Configuration configuration = connection.getConfiguration(); znode = configuration.get(ZOOKEEPER_ZNODE_PARENT, DEFAULT_ZOOKEEPER_ZNODE_PARENT); timeout = configuration .getInt(HConstants.ZK_SESSION_TIMEOUT, HConstants.DEFAULT_ZK_SESSION_TIMEOUT); ConnectStringParser parser = new ConnectStringParser(ZKConfig.getZKQuorumServersString(configuration)); hosts = Lists.newArrayList(); for (InetSocketAddress server : parser.getServerAddresses()) { hosts.add(server.toString()); } if (allowedFailures > (hosts.size() - 1) / 2) { LOG.warn("Confirm allowable number of failed ZooKeeper nodes, as quorum will " + "already be lost. Setting of {} failures is unexpected for {} ensemble size.", allowedFailures, hosts.size()); } }
@Override public ValidationResult validate(String subject, String input, ValidationContext context) { final String connectionString = context.getProperty(CONNECTION_STRING).getValue(); try { new ConnectStringParser(connectionString); } catch (Exception e) { return new ValidationResult.Builder().subject(subject).input(input).explanation("Invalid Connect String: " + connectionString).valid(false).build(); } return new ValidationResult.Builder().subject(subject).input(input).explanation("Valid Connect String").valid(true).build(); } })
/** * if ZkConnectString contains namespace path at the end, but it does not exist we should fail * @param zkConnect - connect string * @param zkClient - zkClient object to talk to the ZK */ public static void validateZkNameSpace(String zkConnect, ZkClient zkClient) { ConnectStringParser parser = new ConnectStringParser(zkConnect); String path = parser.getChrootPath(); if (Strings.isNullOrEmpty(path)) { return; // no namespace path } LOG.info("connectString = " + zkConnect + "; path =" + path); // if namespace specified (path above) but "/" does not exists, we will fail if (!zkClient.exists("/")) { throw new SamzaException("Zookeeper namespace: " + path + " does not exist for zk at " + zkConnect); } } }
hostProvider); serverAddrs.addAll(new ConnectStringParser(cluster).getServerAddresses());
@Override public void setConnectionString(String connectString) { _connectStringParser = new ConnectStringParser(connectString); }
/** * if ZkConnectString contains namespace path at the end, but it does not exist we should fail * @param zkConnect - connect string * @param zkClient - zkClient object to talk to the ZK */ public static void validateZkNameSpace(String zkConnect, ZkClient zkClient) { ConnectStringParser parser = new ConnectStringParser(zkConnect); String path = parser.getChrootPath(); if (Strings.isNullOrEmpty(path)) { return; // no namespace path } LOG.info("connectString = " + zkConnect + "; path =" + path); // if namespace specified (path above) but "/" does not exists, we will fail if (!zkClient.exists("/")) { throw new SamzaException("Zookeeper namespace: " + path + " does not exist for zk at " + zkConnect); } } }
@Test public void testParseServersWithPort(){ String servers = "10.10.10.1:112,10.10.10.2:110"; ConnectStringParser parser = new ConnectStringParser(servers); Assert.assertEquals("10.10.10.1", parser.getServerAddresses().get(0).getHostString()); Assert.assertEquals("10.10.10.2", parser.getServerAddresses().get(1).getHostString()); Assert.assertEquals(112, parser.getServerAddresses().get(0).getPort()); Assert.assertEquals(110, parser.getServerAddresses().get(1).getPort()); servers = "[2001:db8:1::242:ac11:2]:1234,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:5678"; parser = new ConnectStringParser(servers); Assert.assertEquals("2001:db8:1::242:ac11:2", parser.getServerAddresses().get(0).getHostString()); Assert.assertEquals("2001:db8:85a3:8d3:1319:8a2e:370:7348", parser.getServerAddresses().get(1).getHostString()); Assert.assertEquals(1234, parser.getServerAddresses().get(0).getPort()); Assert.assertEquals(5678, parser.getServerAddresses().get(1).getPort()); }
@VisibleForTesting ResolvingEnsembleProviderDelegate(String connectString, Resolver resolver) { _resolver = resolver; _connectStringParser = new ConnectStringParser(connectString); }
/** * if ZkConnectString contains namespace path at the end, but it does not exist we should fail * @param zkConnect - connect string * @param zkClient - zkClient object to talk to the ZK */ public static void validateZkNameSpace(String zkConnect, ZkClient zkClient) { ConnectStringParser parser = new ConnectStringParser(zkConnect); String path = parser.getChrootPath(); if (Strings.isNullOrEmpty(path)) { return; // no namespace path } LOG.info("connectString = " + zkConnect + "; path =" + path); // if namespace specified (path above) but "/" does not exists, we will fail if (!zkClient.exists("/")) { throw new SamzaException("Zookeeper namespace: " + path + " does not exist for zk at " + zkConnect); } } }
@Test public void testParseServersWithoutPort(){ String servers = "10.10.10.1,10.10.10.2"; ConnectStringParser parser = new ConnectStringParser(servers); Assert.assertEquals("10.10.10.1", parser.getServerAddresses().get(0).getHostString()); Assert.assertEquals(DEFAULT_PORT, parser.getServerAddresses().get(0).getPort()); Assert.assertEquals("10.10.10.2", parser.getServerAddresses().get(1).getHostString()); Assert.assertEquals(DEFAULT_PORT, parser.getServerAddresses().get(1).getPort()); servers = "[2001:db8:1::242:ac11:2],[2001:db8:85a3:8d3:1319:8a2e:370:7348]"; parser = new ConnectStringParser(servers); Assert.assertEquals("2001:db8:1::242:ac11:2", parser.getServerAddresses().get(0).getHostString()); Assert.assertEquals(DEFAULT_PORT, parser.getServerAddresses().get(0).getPort()); Assert.assertEquals("2001:db8:85a3:8d3:1319:8a2e:370:7348", parser.getServerAddresses().get(1).getHostString()); Assert.assertEquals(DEFAULT_PORT, parser.getServerAddresses().get(1).getPort()); }
/** * if ZkConnectString contains namespace path at the end, but it does not exist we should fail * @param zkConnect - connect string * @param zkClient - zkClient object to talk to the ZK */ public static void validateZkNameSpace(String zkConnect, ZkClient zkClient) { ConnectStringParser parser = new ConnectStringParser(zkConnect); String path = parser.getChrootPath(); if (Strings.isNullOrEmpty(path)) { return; // no namespace path } LOG.info("connectString = " + zkConnect + "; path =" + path); // if namespace specified (path above) but "/" does not exists, we will fail if (!zkClient.exists("/")) { throw new SamzaException("Zookeeper namespace: " + path + " does not exist for zk at " + zkConnect); } } }