private static int findServerId(Map<Integer, ZooKeeperAddress> servers, int currentServerId, InetAddress addr) { final String ip = NetUtil.toAddressString(addr, true); for (Entry<Integer, ZooKeeperAddress> entry : servers.entrySet()) { final String zkAddr; try { zkAddr = NetUtil.toAddressString(InetAddress.getByName(entry.getValue().host()), true); } catch (UnknownHostException uhe) { throw new IllegalStateException( "failed to resolve the IP address of the server name: " + entry.getValue().host()); } if (zkAddr.equals(ip)) { final int serverId = entry.getKey().intValue(); if (currentServerId < 0) { currentServerId = serverId; } else if (currentServerId != serverId) { throw new IllegalStateException( "cannot auto-detect server ID because there are more than one IP address match. " + "Both server ID " + currentServerId + " and " + serverId + " have a matching IP address. Consider specifying server ID explicitly."); } } } return currentServerId; }
/** * Creates a new instance. * * @param host the IP address or host name of the ZooKeeper server * @param quorumPort the quorum port number * @param electionPort the election port number * @param clientPort the client port number (0-65535) */ @JsonCreator public ZooKeeperAddress(@JsonProperty(value = "host", required = true) String host, @JsonProperty(value = "quorumPort", required = true) int quorumPort, @JsonProperty(value = "electionPort", required = true) int electionPort, @JsonProperty(value = "clientPort", defaultValue = "0") int clientPort) { this.host = requireNonNull(host, "host"); this.quorumPort = validatePort(quorumPort, "quorumPort"); this.electionPort = validatePort(electionPort, "electionPort"); checkArgument(clientPort >= 0 && clientPort <= 65535, "clientPort: %s (expected: 0-65535)", clientPort); this.clientPort = clientPort; }
zkProps.setProperty("clientPort", String.valueOf(cfg.serverAddress().clientPort())); zkProps.setProperty( "server." + id, addr.host() + ':' + addr.quorumPort() + ':' + addr.electionPort() + ":participant"); });
@Override protected void configure(CentralDogmaBuilder builder) { // Set up a cluster of two replicas where the second replica is always unavailable, final int quorumPort = InstanceSpec.getRandomPort(); final int electionPort = InstanceSpec.getRandomPort(); final int clientPort = InstanceSpec.getRandomPort(); builder.replication(new ZooKeeperReplicationConfig( 1, ImmutableMap.of(1, new ZooKeeperAddress("127.0.0.1", quorumPort, electionPort, clientPort), 2, new ZooKeeperAddress("127.0.0.1", 1, 1, 1)))); } };
zkProps.setProperty("clientPort", String.valueOf(cfg.serverAddress().clientPort())); zkProps.setProperty( "server." + id, addr.host() + ':' + addr.quorumPort() + ':' + addr.electionPort() + ":participant"); });
@Test public void testJsonConversionWithoutOptionalProperties() throws Exception { final ReplicationConfig defaultCfg = Jackson.readValue( '{' + " \"method\": \"ZOOKEEPER\"," + " \"serverId\": 10," + " \"servers\": {" + " \"10\": {" + " \"host\": \"foo\"," + " \"quorumPort\": 100," + " \"electionPort\": 101" + " }," + " \"11\": {" + " \"host\": \"bar\"," + " \"quorumPort\": 200," + " \"electionPort\": 201" + " }" + " }" + '}', ReplicationConfig.class); assertThat(defaultCfg).isEqualTo( new ZooKeeperReplicationConfig( 10, ImmutableMap.of(10, new ZooKeeperAddress("foo", 100, 101, 0), 11, new ZooKeeperAddress("bar", 200, 201, 0)), null, null, null, null, null, null)); }
zkProps.setProperty("clientPort", String.valueOf(cfg.serverAddress().clientPort())); zkProps.setProperty( "server." + id, addr.host() + ':' + addr.quorumPort() + ':' + addr.electionPort() + ":participant"); });
/** * Creates a new instance. * * @param host the IP address or host name of the ZooKeeper server * @param quorumPort the quorum port number * @param electionPort the election port number * @param clientPort the client port number (0-65535) */ @JsonCreator public ZooKeeperAddress(@JsonProperty(value = "host", required = true) String host, @JsonProperty(value = "quorumPort", required = true) int quorumPort, @JsonProperty(value = "electionPort", required = true) int electionPort, @JsonProperty(value = "clientPort", defaultValue = "0") int clientPort) { this.host = requireNonNull(host, "host"); this.quorumPort = validatePort(quorumPort, "quorumPort"); this.electionPort = validatePort(electionPort, "electionPort"); checkArgument(clientPort >= 0 && clientPort <= 65535, "clientPort: %s (expected: 0-65535)", clientPort); this.clientPort = clientPort; }
private static int findServerId(Map<Integer, ZooKeeperAddress> servers, int currentServerId, InetAddress addr) { final String ip = NetUtil.toAddressString(addr, true); for (Entry<Integer, ZooKeeperAddress> entry : servers.entrySet()) { final String zkAddr; try { zkAddr = NetUtil.toAddressString(InetAddress.getByName(entry.getValue().host()), true); } catch (UnknownHostException uhe) { throw new IllegalStateException( "failed to resolve the IP address of the server name: " + entry.getValue().host()); } if (zkAddr.equals(ip)) { if (currentServerId < 0) { currentServerId = entry.getKey().intValue(); } else { throw new IllegalStateException( "cannot auto-detect server ID because there are more than one IP address match. " + "Both server ID " + currentServerId + " and " + entry.getKey() + " have a matching IP address. Consider specifying server ID explicitly."); } } } return currentServerId; }
@Test public void testJsonConversion() throws Exception { final ZooKeeperReplicationConfig cfg = new ZooKeeperReplicationConfig( 1, ImmutableMap.of(1, new ZooKeeperAddress("2", 3, 4, 5), 6, new ZooKeeperAddress("7", 8, 9, 10)), "11", ImmutableMap.of("12", "13", "14", "15"), 16, 17, 18, 19); assertJsonConversion(cfg, ReplicationConfig.class,
/** * Creates a new instance. * * @param host the IP address or host name of the ZooKeeper server * @param quorumPort the quorum port number * @param electionPort the election port number * @param clientPort the client port number (0-65535) */ @JsonCreator public ZooKeeperAddress(@JsonProperty(value = "host", required = true) String host, @JsonProperty(value = "quorumPort", required = true) int quorumPort, @JsonProperty(value = "electionPort", required = true) int electionPort, @JsonProperty(value = "clientPort", defaultValue = "0") int clientPort) { this.host = requireNonNull(host, "host"); this.quorumPort = validatePort(quorumPort, "quorumPort"); this.electionPort = validatePort(electionPort, "electionPort"); checkArgument(clientPort >= 0 && clientPort <= 65535, "clientPort: %s (expected: 0-65535)", clientPort); this.clientPort = clientPort; }
private static int findServerId(Map<Integer, ZooKeeperAddress> servers, int currentServerId, InetAddress addr) { final String ip = NetUtil.toAddressString(addr, true); for (Entry<Integer, ZooKeeperAddress> entry : servers.entrySet()) { final String zkAddr; try { zkAddr = NetUtil.toAddressString(InetAddress.getByName(entry.getValue().host()), true); } catch (UnknownHostException uhe) { throw new IllegalStateException( "failed to resolve the IP address of the server name: " + entry.getValue().host()); } if (zkAddr.equals(ip)) { final int serverId = entry.getKey().intValue(); if (currentServerId < 0) { currentServerId = serverId; } else if (currentServerId != serverId) { throw new IllegalStateException( "cannot auto-detect server ID because there are more than one IP address match. " + "Both server ID " + currentServerId + " and " + serverId + " have a matching IP address. Consider specifying server ID explicitly."); } } } return currentServerId; }
new ZooKeeperAddress("127.0.0.1", spec.getQuorumPort(), spec.getElectionPort(), 0));
1, new ZooKeeperAddress("127.0.0.1", zkQuorumPort1, zkElectionPort1, zkClientPort1), 2, new ZooKeeperAddress("127.0.0.1", zkQuorumPort2, zkElectionPort2, zkClientPort2));