This is an automated email from the ASF dual-hosted git repository. bschuchardt pushed a commit to branch feature/GEODE-7808 in repository https://gitbox.apache.org/repos/asf/geode.git
commit d9afd49f205c9fbe56e166d3fd2463df8d613da8 Author: Bruce Schuchardt <[email protected]> AuthorDate: Fri Feb 21 11:16:17 2020 -0800 GEODE-7808 standardize on use of LocatorAddress/HostAddress removed HostAddress renamed LocatorAddress to HostAndPort modified TcpClient methods to take a HostAndPort argument instead of InetAddress modified SocketCreator to take a HostAndPort argument instead of InetAddress --- .../internal/LocatorLoadBalancingDUnitTest.java | 6 +-- .../geode/cache30/ClientMembershipDUnitTest.java | 3 -- .../AutoConnectionSourceImplJUnitTest.java | 28 +++++----- .../geode/distributed/LocatorIntegrationTest.java | 4 +- .../tcpserver/TCPClientSSLIntegrationTest.java | 12 +++-- .../internal/tcpserver/TCPServerSSLJUnitTest.java | 5 +- .../net/ClientSocketFactoryIntegrationTest.java | 4 +- .../internal/net/SSLSocketIntegrationTest.java | 7 ++- ...SSLSocketParameterExtensionIntegrationTest.java | 4 +- .../internal/DistributionLocatorConfigImpl.java | 8 ++- .../admin/internal/DistributionLocatorImpl.java | 3 +- .../client/internal/AutoConnectionSourceImpl.java | 47 ++++++++-------- .../cache/client/internal/ConnectionImpl.java | 4 +- .../geode/cache/client/internal/PoolImpl.java | 24 +++++---- .../apache/geode/distributed/LocatorLauncher.java | 4 +- .../membership/InternalDistributedMember.java | 26 ++------- .../apache/geode/internal/DistributionLocator.java | 6 ++- .../org/apache/geode/internal/SystemAdmin.java | 3 +- .../admin/remote/DistributionLocatorId.java | 26 +++------ .../geode/internal/cache/GemFireCacheImpl.java | 3 +- .../geode/internal/cache/PoolFactoryImpl.java | 29 +++++----- .../cache/tier/sockets/CacheClientUpdater.java | 4 +- .../apache/geode/internal/net/SocketCreator.java | 29 +++++----- .../ContextAwareSSLRMIClientSocketFactory.java | 5 +- .../internal/JmxManagerLocatorRequest.java | 8 ++- .../internal/api/GeodeConnectionConfig.java | 4 +- .../utils/ClusterConfigurationStatusRetriever.java | 11 ++-- .../geode/cache/client/internal/PoolImplTest.java | 4 +- .../tier/sockets/CacheClientUpdaterJUnitTest.java | 3 +- .../internal/membership/gms/GMSUtilTest.java | 36 +++++-------- .../gms/membership/GMSJoinLeaveJUnitTest.java | 12 ++--- .../internal/membership/gms/GMSUtil.java | 14 +++-- .../membership/gms/MemberDataBuilderImpl.java | 4 +- .../membership/gms/MemberIdentifierImpl.java | 4 +- .../membership/gms/fd/GMSHealthMonitor.java | 3 +- .../membership/gms/locator/GMSLocator.java | 13 +++-- .../gms/locator/MembershipLocatorImpl.java | 4 +- .../membership/gms/membership/GMSJoinLeave.java | 9 ++-- .../membership/gms/membership/HostAddress.java | 27 ---------- .../acceptance/CacheConnectionIntegrationTest.java | 3 +- .../v1/acceptance/CacheOperationsJUnitTest.java | 3 +- .../serialization/StaticSerialization.java | 1 + .../tcpserver/TcpServerGossipVersionDUnitTest.java | 3 +- .../internal/tcpserver/TcpServerJUnitTest.java | 21 +++++--- .../TcpServerProductVersionDUnitTest.java | 4 +- .../{LocatorAddress.java => HostAndPort.java} | 26 +++++---- .../distributed/internal/tcpserver/TcpClient.java | 62 +++++++--------------- .../internal/tcpserver/TcpSocketCreator.java | 4 +- .../internal/tcpserver/TcpSocketCreatorImpl.java | 15 +++--- ...ocatorAddressTest.java => HostAndPortTest.java} | 40 ++++---------- .../internal/locator/wan/LocatorDiscovery.java | 11 ++-- .../locator/wan/LocatorMembershipListenerImpl.java | 6 ++- .../locator/wan/LocatorMembershipListenerTest.java | 4 +- ...SenderEventRemoteDispatcherIntegrationTest.java | 17 ------ 54 files changed, 292 insertions(+), 378 deletions(-) diff --git a/geode-core/src/distributedTest/java/org/apache/geode/cache/client/internal/LocatorLoadBalancingDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/cache/client/internal/LocatorLoadBalancingDUnitTest.java index 54f552f..f88ba3c 100644 --- a/geode-core/src/distributedTest/java/org/apache/geode/cache/client/internal/LocatorLoadBalancingDUnitTest.java +++ b/geode-core/src/distributedTest/java/org/apache/geode/cache/client/internal/LocatorLoadBalancingDUnitTest.java @@ -18,7 +18,6 @@ import static org.apache.geode.test.awaitility.GeodeAwaitility.await; import java.io.IOException; import java.io.Serializable; -import java.net.InetAddress; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -45,6 +44,7 @@ import org.apache.geode.distributed.internal.DistributionConfigImpl; import org.apache.geode.distributed.internal.InternalLocator; import org.apache.geode.distributed.internal.ServerLocation; import org.apache.geode.distributed.internal.ServerLocator; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.InternalDataSerializer; import org.apache.geode.internal.cache.CacheServerImpl; @@ -181,8 +181,8 @@ public class LocatorLoadBalancingDUnitTest extends LocatorTestBase { .getSocketCreatorForComponent(SecurableCommunicationChannel.LOCATOR), InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()) - .requestToServer(InetAddress.getByName(hostName), - locatorPort, + .requestToServer(new HostAndPort(hostName, + locatorPort), request, 10000, replyExpected); } diff --git a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java index e69cbbe..bd33935 100644 --- a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java +++ b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java @@ -838,9 +838,6 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase { ClientCache clientCache = (ClientCache) getCache(); Set<InetSocketAddress> servers = clientCache.getCurrentServers(); assertTrue(!servers.isEmpty()); - InetSocketAddress serverAddr = servers.iterator().next(); - InetSocketAddress expectedAddr = new InetSocketAddress(serverMember.getHost(), ports[0]); - assertEquals(expectedAddr, serverAddr); // now check listener results assertTrue(fired[JOINED]); diff --git a/geode-core/src/integrationTest/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java index 7399f0e..7534ecd 100644 --- a/geode-core/src/integrationTest/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java @@ -68,7 +68,7 @@ import org.apache.geode.distributed.internal.DistributionStats; import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.ProtocolCheckerImpl; import org.apache.geode.distributed.internal.ServerLocation; -import org.apache.geode.distributed.internal.tcpserver.LocatorAddress; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.distributed.internal.tcpserver.TcpHandler; import org.apache.geode.distributed.internal.tcpserver.TcpServer; @@ -81,7 +81,6 @@ import org.apache.geode.internal.net.SocketCreatorFactory; import org.apache.geode.internal.security.SecurableCommunicationChannel; import org.apache.geode.management.membership.ClientMembershipEvent; import org.apache.geode.management.membership.ClientMembershipListener; -import org.apache.geode.test.dunit.NetworkUtils; import org.apache.geode.test.junit.categories.ClientServerTest; import org.apache.geode.util.internal.GeodeGlossary; @@ -123,8 +122,8 @@ public class AutoConnectionSourceImplJUnitTest { InetAddress ia = InetAddress.getLocalHost(); InetSocketAddress isa = new InetSocketAddress(ia, port); locators.add(isa); - List<LocatorAddress> la = new ArrayList<>(); - la.add(new LocatorAddress(isa, ia.getHostName())); + List<HostAndPort> la = new ArrayList<>(); + la.add(new HostAndPort(ia.getHostName(), port)); source = new AutoConnectionSourceImpl(la, "", 60 * 1000); source.start(pool); } @@ -163,7 +162,7 @@ public class AutoConnectionSourceImplJUnitTest { .getSocketCreatorForComponent(SecurableCommunicationChannel.LOCATOR), InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()) - .stop(InetAddress.getLocalHost(), port); + .stop(new HostAndPort(InetAddress.getLocalHost().getHostName(), port)); } /** @@ -179,18 +178,18 @@ public class AutoConnectionSourceImplJUnitTest { InetSocketAddress floc2 = new InetSocketAddress("fakeLocalHost2", port); locators.add(floc1); locators.add(floc2); - List<LocatorAddress> la = new ArrayList<>(); - la.add(new LocatorAddress(floc1, floc1.getHostName())); - la.add(new LocatorAddress(floc2, floc2.getHostName())); + List<HostAndPort> la = new ArrayList<>(); + la.add(new HostAndPort(floc1.getHostName(), floc1.getPort())); + la.add(new HostAndPort(floc2.getHostName(), floc2.getPort())); AutoConnectionSourceImpl src = new AutoConnectionSourceImpl(la, "", 60 * 1000); InetSocketAddress b1 = new InetSocketAddress("fakeLocalHost1", port); InetSocketAddress b2 = new InetSocketAddress("fakeLocalHost3", port); - Set<LocatorAddress> bla = new HashSet<>(); - bla.add(new LocatorAddress(b1, b1.getHostName())); - bla.add(new LocatorAddress(b2, b2.getHostName())); + Set<HostAndPort> bla = new HashSet<>(); + bla.add(new HostAndPort(b1.getHostName(), b1.getPort())); + bla.add(new HostAndPort(b2.getHostName(), b2.getPort())); src.addbadLocators(la, bla); @@ -212,13 +211,12 @@ public class AutoConnectionSourceImplJUnitTest { @Test public void testSourceHandlesToDataException() throws IOException, ClassNotFoundException { TcpClient mockConnection = mock(TcpClient.class); - when(mockConnection.requestToServer(isA(InetSocketAddress.class), any(Object.class), + when(mockConnection.requestToServer(isA(HostAndPort.class), any(Object.class), isA(Integer.class), isA(Boolean.class))).thenThrow(new ToDataException("testing")); try { - InetSocketAddress address = new InetSocketAddress(NetworkUtils.getServerHostName(), 1234); - source.queryOneLocatorUsingConnection(new LocatorAddress(address, "locator[1234]"), mock( + source.queryOneLocatorUsingConnection(new HostAndPort("locator[1234]", 1234), mock( ServerLocationRequest.class), mockConnection); - verify(mockConnection).requestToServer(isA(InetSocketAddress.class), + verify(mockConnection).requestToServer(isA(HostAndPort.class), isA(ServerLocationRequest.class), isA(Integer.class), isA(Boolean.class)); } catch (NoAvailableLocatorsException expected) { // do nothing diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorIntegrationTest.java index e38223e..8f1c3a1 100644 --- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorIntegrationTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorIntegrationTest.java @@ -29,7 +29,6 @@ import static org.assertj.core.api.Assertions.catchThrowable; import java.io.File; import java.io.IOException; -import java.net.InetAddress; import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -51,6 +50,7 @@ import org.junit.runners.Parameterized.UseParametersRunnerFactory; import org.apache.geode.distributed.internal.InternalLocator; import org.apache.geode.distributed.internal.ServerLocation; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.AvailablePortHelper; import org.apache.geode.internal.InternalDataSerializer; @@ -174,7 +174,7 @@ public class LocatorIntegrationTest { .getSocketCreatorForComponent(SecurableCommunicationChannel.LOCATOR), InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()); - String[] info = client.getInfo(InetAddress.getLocalHost(), boundPort); + String[] info = client.getInfo(new HostAndPort("localhost", boundPort)); assertThat(info).isNotNull(); assertThat(info.length).isGreaterThanOrEqualTo(1); diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/tcpserver/TCPClientSSLIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/tcpserver/TCPClientSSLIntegrationTest.java index ef05022..38e47b3 100644 --- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/tcpserver/TCPClientSSLIntegrationTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/tcpserver/TCPClientSSLIntegrationTest.java @@ -146,7 +146,8 @@ public class TCPClientSSLIntegrationTest { startServerAndClient(serverCertificate, clientCertificate, true); String response = - (String) client.requestToServer(localhost, port, Boolean.valueOf(false), 5 * 1000); + (String) client.requestToServer(new HostAndPort(localhost.getHostAddress(), port), + Boolean.valueOf(false), 5 * 1000); assertThat(response).isEqualTo("Running!"); } @@ -165,7 +166,8 @@ public class TCPClientSSLIntegrationTest { startServerAndClient(serverCertificate, clientCertificate, false); String response = - (String) client.requestToServer(localhost, port, Boolean.valueOf(false), 5 * 1000); + (String) client.requestToServer(new HostAndPort(localhost.getHostAddress(), port), + Boolean.valueOf(false), 5 * 1000); assertThat(response).isEqualTo("Running!"); } @@ -184,7 +186,8 @@ public class TCPClientSSLIntegrationTest { startServerAndClient(serverCertificate, clientCertificate, true); assertThatExceptionOfType(IllegalStateException.class) - .isThrownBy(() -> client.requestToServer(localhost, port, Boolean.valueOf(false), 5 * 1000)) + .isThrownBy(() -> client.requestToServer(new HostAndPort(localhost.getHostAddress(), port), + Boolean.valueOf(false), 5 * 1000)) .withCauseInstanceOf(SSLHandshakeException.class) .withStackTraceContaining("No name matching " + localhost.getHostName() + " found"); } @@ -205,7 +208,8 @@ public class TCPClientSSLIntegrationTest { startServerAndClient(serverCertificate, clientCertificate, true); assertThatExceptionOfType(IllegalStateException.class) - .isThrownBy(() -> client.requestToServer(localhost, port, Boolean.valueOf(false), 5 * 1000)) + .isThrownBy(() -> client.requestToServer(new HostAndPort(localhost.getHostAddress(), port), + Boolean.valueOf(false), 5 * 1000)) .withCauseInstanceOf(SSLHandshakeException.class) .withStackTraceContaining("No subject alternative DNS name matching " + localhost.getHostName() + " found."); diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/tcpserver/TCPServerSSLJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/tcpserver/TCPServerSSLJUnitTest.java index 515321f..1a5eac5 100644 --- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/tcpserver/TCPServerSSLJUnitTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/tcpserver/TCPServerSSLJUnitTest.java @@ -109,7 +109,7 @@ public class TCPServerSSLJUnitTest { */ socketCreator.setFailTLSHandshake(false); - getTcpClient().stop(localhost, port); + getTcpClient().stop(new HostAndPort(localhost.getHostAddress(), port)); server.join(60 * 1000); @@ -121,7 +121,8 @@ public class TCPServerSSLJUnitTest { try { - getTcpClient().requestToServer(localhost, port, Boolean.valueOf(false), 5 * 1000); + getTcpClient().requestToServer(new HostAndPort(localhost.getHostAddress(), port), + Boolean.valueOf(false), 5 * 1000); throw new AssertionError("expected to get an exception but didn't"); } catch (final IllegalStateException | IOException t) { diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/net/ClientSocketFactoryIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/net/ClientSocketFactoryIntegrationTest.java index 7276dc4..f5bbb5b 100644 --- a/geode-core/src/integrationTest/java/org/apache/geode/internal/net/ClientSocketFactoryIntegrationTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/net/ClientSocketFactoryIntegrationTest.java @@ -35,6 +35,7 @@ import org.junit.experimental.categories.Category; import org.apache.geode.distributed.ClientSocketFactory; import org.apache.geode.distributed.internal.DistributionConfig; import org.apache.geode.distributed.internal.DistributionConfigImpl; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.test.junit.categories.ClientServerTest; /** @@ -82,7 +83,8 @@ public class ClientSocketFactoryIntegrationTest { @Test public void testClientSocketFactory() throws Exception { assertThatThrownBy(() -> this.socket = SocketCreatorFactory - .getSocketCreatorForComponent(CLUSTER).connectForClient("localhost", 12345, 0)) + .getSocketCreatorForComponent(CLUSTER) + .connectForClient(new HostAndPort("localhost", 12345), 0)) .isExactlyInstanceOf(IOException.class).hasMessage(EXCEPTION_MESSAGE); assertThat(invokedCreateSocket).isTrue(); diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/net/SSLSocketIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/net/SSLSocketIntegrationTest.java index 481313e..7be234f 100755 --- a/geode-core/src/integrationTest/java/org/apache/geode/internal/net/SSLSocketIntegrationTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/net/SSLSocketIntegrationTest.java @@ -72,6 +72,7 @@ import org.junit.rules.TestName; import org.apache.geode.distributed.internal.DMStats; import org.apache.geode.distributed.internal.DistributionConfig; import org.apache.geode.distributed.internal.DistributionConfigImpl; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.ByteBufferOutputStream; import org.apache.geode.internal.inet.LocalHostUtil; import org.apache.geode.internal.security.SecurableCommunicationChannel; @@ -180,7 +181,8 @@ public class SSLSocketIntegrationTest { this.serverThread = startServer(this.serverSocket, 15000); int serverPort = this.serverSocket.getLocalPort(); - this.clientSocket = this.socketCreator.connectForServer(this.localHost, serverPort); + this.clientSocket = this.socketCreator + .connectForServer(new HostAndPort(this.localHost.getHostAddress(), serverPort)); // transmit expected string from Client to Server ObjectOutputStream output = new ObjectOutputStream(this.clientSocket.getOutputStream()); @@ -408,7 +410,8 @@ public class SSLSocketIntegrationTest { await("connect to server socket").until(() -> { try { Socket clientSocket = socketCreator.connectForClient( - LocalHostUtil.getLocalHost().getHostAddress(), serverSocketPort, 500); + new HostAndPort(LocalHostUtil.getLocalHost().getHostAddress(), serverSocketPort), + 500); clientSocket.close(); System.err.println( "client successfully connected to server but should not have been able to do so"); diff --git a/geode-core/src/integrationTest/java/org/apache/geode/net/SSLSocketParameterExtensionIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/net/SSLSocketParameterExtensionIntegrationTest.java index 18c67d4..16f360f 100644 --- a/geode-core/src/integrationTest/java/org/apache/geode/net/SSLSocketParameterExtensionIntegrationTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/net/SSLSocketParameterExtensionIntegrationTest.java @@ -58,6 +58,7 @@ import org.junit.rules.TestName; import org.apache.geode.cache.CacheFactory; import org.apache.geode.distributed.internal.DistributionConfig; import org.apache.geode.distributed.internal.DistributionConfigImpl; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.internal.net.SocketCreator; import org.apache.geode.internal.net.SocketCreatorFactory; @@ -145,7 +146,8 @@ public class SSLSocketParameterExtensionIntegrationTest { this.serverThread = startServer(this.serverSocket, 15000); int serverPort = this.serverSocket.getLocalPort(); - this.clientSocket = this.socketCreator.connectForServer(this.localHost, serverPort); + this.clientSocket = this.socketCreator + .connectForServer(new HostAndPort(this.localHost.getHostAddress(), serverPort)); SSLSocket sslSocket = (SSLSocket) this.clientSocket; diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java index 60dacb1..b735ca6 100644 --- a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java +++ b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorConfigImpl.java @@ -15,7 +15,6 @@ package org.apache.geode.admin.internal; import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT; -import static org.apache.geode.internal.net.InetAddressUtilsWithLogging.toInetAddress; import static org.apache.geode.internal.net.InetAddressUtilsWithLogging.validateHost; import java.net.InetAddress; @@ -24,6 +23,7 @@ import java.util.Properties; import org.apache.geode.GemFireConfigException; import org.apache.geode.admin.DistributionLocator; import org.apache.geode.admin.DistributionLocatorConfig; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.InternalDataSerializer; import org.apache.geode.internal.net.SocketCreatorFactory; @@ -65,8 +65,6 @@ public class DistributionLocatorConfigImpl extends ManagedEntityConfigImpl * Contacts a distribution locator on the given host and port and creates a * <code>DistributionLocatorConfig</code> for it. * - * @see TcpClient#getLocatorInfo - * * @return <code>null</code> if the locator cannot be contacted */ static DistributionLocatorConfig createConfigFor(String host, int port, InetAddress bindAddress) { @@ -78,9 +76,9 @@ public class DistributionLocatorConfigImpl extends ManagedEntityConfigImpl InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()); if (bindAddress != null) { - info = client.getInfo(bindAddress, port); + info = client.getInfo(new HostAndPort(bindAddress.getHostAddress(), port)); } else { - info = client.getInfo(toInetAddress(host), port); + info = client.getInfo(new HostAndPort(host, port)); } if (info == null) { return null; diff --git a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorImpl.java b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorImpl.java index 419cf60..8866975 100755 --- a/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorImpl.java +++ b/geode-core/src/main/java/org/apache/geode/admin/internal/DistributionLocatorImpl.java @@ -212,7 +212,8 @@ public class DistributionLocatorImpl implements DistributionLocator, InternalMan found = locator.getHost().getHostName().equals(inetAddr.getHostName()); if (!found) { found = - locator.getHost().getAddress().getHostAddress().equals(inetAddr.getHostAddress()); + locator.getHost().getSocketInetAddress().getAddress() + .getHostAddress().equals(inetAddr.getHostAddress()); } } catch (UnknownHostException e) { // try config host as if it is an IP address instead of host name diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImpl.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImpl.java index 1714af3..94336f3 100644 --- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImpl.java +++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImpl.java @@ -49,7 +49,7 @@ import org.apache.geode.cache.client.internal.locator.QueueConnectionResponse; import org.apache.geode.cache.client.internal.locator.ServerLocationRequest; import org.apache.geode.cache.client.internal.locator.ServerLocationResponse; import org.apache.geode.distributed.internal.ServerLocation; -import org.apache.geode.distributed.internal.tcpserver.LocatorAddress; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.InternalDataSerializer; import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID; @@ -74,7 +74,7 @@ public class AutoConnectionSourceImpl implements ConnectionSource { private static final LocatorListRequest LOCATOR_LIST_REQUEST = new LocatorListRequest(); @Immutable - private static final Comparator<LocatorAddress> SOCKET_ADDRESS_COMPARATOR = + private static final Comparator<HostAndPort> SOCKET_ADDRESS_COMPARATOR = (address, otherAddress) -> { InetSocketAddress inetSocketAddress = address.getSocketInetAddress(); InetSocketAddress otherInetSocketAddress = otherAddress.getSocketInetAddress(); @@ -92,7 +92,7 @@ public class AutoConnectionSourceImpl implements ConnectionSource { return inetSocketAddress.getPort() - otherInetSocketAddress.getPort(); } }; - private final List<LocatorAddress> initialLocators; + private final List<HostAndPort> initialLocators; private final String serverGroup; private AtomicReference<LocatorList> locators = new AtomicReference<>(); @@ -108,7 +108,7 @@ public class AutoConnectionSourceImpl implements ConnectionSource { */ private final Map<InetSocketAddress, Exception> locatorState = new HashMap<>(); - public AutoConnectionSourceImpl(List<LocatorAddress> contacts, String serverGroup, + public AutoConnectionSourceImpl(List<HostAndPort> contacts, String serverGroup, int handshakeTimeout) { this.locators.set(new LocatorList(new ArrayList<>(contacts))); this.onlineLocators.set(new LocatorList(Collections.emptyList())); @@ -195,19 +195,19 @@ public class AutoConnectionSourceImpl implements ConnectionSource { } - private ServerLocationResponse queryOneLocator(LocatorAddress locator, + private ServerLocationResponse queryOneLocator(HostAndPort locator, ServerLocationRequest request) { return queryOneLocatorUsingConnection(locator, request, tcpClient); } - ServerLocationResponse queryOneLocatorUsingConnection(LocatorAddress locator, + ServerLocationResponse queryOneLocatorUsingConnection(HostAndPort locator, ServerLocationRequest request, TcpClient locatorConnection) { Object returnObj = null; try { pool.getStats().incLocatorRequests(); - returnObj = locatorConnection.requestToServer(locator.getSocketInetAddress(), request, + returnObj = locatorConnection.requestToServer(locator, request, connectionTimeout, true); ServerLocationResponse response = (ServerLocationResponse) returnObj; pool.getStats().incLocatorResponses(); @@ -240,7 +240,7 @@ public class AutoConnectionSourceImpl implements ConnectionSource { final boolean isDebugEnabled = logger.isDebugEnabled(); do { - LocatorAddress hostAddress = (LocatorAddress) controllerItr.next(); + HostAndPort hostAddress = (HostAndPort) controllerItr.next(); if (isDebugEnabled) { logger.debug("Sending query to locator {}: {}", hostAddress, request); } @@ -259,14 +259,13 @@ public class AutoConnectionSourceImpl implements ConnectionSource { isBalanced = response.isBalanced(); List<ServerLocation> locatorResponse = response.getLocators(); - List<LocatorAddress> newLocatorAddresses = new ArrayList<>(locatorResponse.size()); - List<LocatorAddress> newOnlineLocators = new ArrayList<>(locatorResponse.size()); + List<HostAndPort> newLocatorAddresses = new ArrayList<>(locatorResponse.size()); + List<HostAndPort> newOnlineLocators = new ArrayList<>(locatorResponse.size()); - Set<LocatorAddress> badLocators = new HashSet<>(initialLocators); + Set<HostAndPort> badLocators = new HashSet<>(initialLocators); for (ServerLocation locator : locatorResponse) { - InetSocketAddress address = new InetSocketAddress(locator.getHostName(), locator.getPort()); - LocatorAddress hostAddress = new LocatorAddress(address, locator.getHostName()); + HostAndPort hostAddress = new HostAndPort(locator.getHostName(), locator.getPort()); newLocatorAddresses.add(hostAddress); newOnlineLocators.add(hostAddress); badLocators.remove(hostAddress); @@ -305,10 +304,10 @@ public class AutoConnectionSourceImpl implements ConnectionSource { * This method will add bad locator only when locator with hostname and port is not already in * list. */ - protected void addbadLocators(List<LocatorAddress> newLocators, Set<LocatorAddress> badLocators) { - for (LocatorAddress badloc : badLocators) { + protected void addbadLocators(List<HostAndPort> newLocators, Set<HostAndPort> badLocators) { + for (HostAndPort badloc : badLocators) { boolean addIt = true; - for (LocatorAddress goodloc : newLocators) { + for (HostAndPort goodloc : newLocators) { boolean isSameHost = badloc.getHostName().equals(goodloc.getHostName()); if (isSameHost && badloc.getPort() == goodloc.getPort()) { // ip has been changed so don't add this in current @@ -374,23 +373,23 @@ public class AutoConnectionSourceImpl implements ConnectionSource { * A list of locators, which remembers the last known good locator. */ private static class LocatorList { - protected final List<LocatorAddress> locators; + protected final List<HostAndPort> locators; AtomicInteger currentLocatorIndex = new AtomicInteger(); - LocatorList(List<LocatorAddress> locators) { + LocatorList(List<HostAndPort> locators) { locators.sort(SOCKET_ADDRESS_COMPARATOR); this.locators = Collections.unmodifiableList(locators); } public List<InetSocketAddress> getLocators() { List<InetSocketAddress> locs = new ArrayList<>(); - for (LocatorAddress la : locators) { + for (HostAndPort la : locators) { locs.add(la.getSocketInetAddress()); } return locs; } - List<LocatorAddress> getLocatorAddresses() { + List<HostAndPort> getLocatorAddresses() { return locators; } @@ -398,7 +397,7 @@ public class AutoConnectionSourceImpl implements ConnectionSource { return locators.size(); } - public Iterator<LocatorAddress> iterator() { + public Iterator<HostAndPort> iterator() { return new LocatorIterator(); } @@ -413,7 +412,7 @@ public class AutoConnectionSourceImpl implements ConnectionSource { * controller. * */ - protected class LocatorIterator implements Iterator<LocatorAddress> { + protected class LocatorIterator implements Iterator<HostAndPort> { private int startLocator = currentLocatorIndex.get(); private int locatorNum = 0; @@ -423,12 +422,12 @@ public class AutoConnectionSourceImpl implements ConnectionSource { } @Override - public LocatorAddress next() { + public HostAndPort next() { if (!hasNext()) { return null; } else { int index = (locatorNum + startLocator) % locators.size(); - LocatorAddress nextLocator = locators.get(index); + HostAndPort nextLocator = locators.get(index); currentLocatorIndex.set(index); locatorNum++; return nextLocator; diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/ConnectionImpl.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/ConnectionImpl.java index c149a72..0e4af88 100644 --- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/ConnectionImpl.java +++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/ConnectionImpl.java @@ -32,6 +32,7 @@ import org.apache.geode.annotations.internal.MutableForTesting; import org.apache.geode.cache.wan.GatewaySender; import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.ServerLocation; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.cache.tier.ClientSideHandshake; import org.apache.geode.internal.cache.tier.CommunicationMode; import org.apache.geode.internal.cache.tier.sockets.ServerConnection; @@ -87,7 +88,8 @@ public class ConnectionImpl implements Connection { ClientSideHandshake handshake, int socketBufferSize, int handshakeTimeout, int readTimeout, CommunicationMode communicationMode, GatewaySender sender, SocketCreator sc) throws IOException { - theSocket = sc.connectForClient(location.getHostName(), location.getPort(), handshakeTimeout, + theSocket = sc.connectForClient(new HostAndPort(location.getHostName(), location.getPort()), + handshakeTimeout, socketBufferSize); theSocket.setTcpNoDelay(true); theSocket.setSendBufferSize(socketBufferSize); diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java index 4e94a8d..9f2abca 100644 --- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java +++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java @@ -28,6 +28,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; import org.apache.logging.log4j.Logger; @@ -54,7 +55,7 @@ import org.apache.geode.distributed.PoolCancelledException; import org.apache.geode.distributed.internal.DistributionConfig; import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.ServerLocation; -import org.apache.geode.distributed.internal.tcpserver.LocatorAddress; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.admin.ClientStatsManager; import org.apache.geode.internal.cache.EventID; import org.apache.geode.internal.cache.InternalCache; @@ -112,9 +113,9 @@ public class PoolImpl implements InternalPool { private final int subscriptionAckInterval; private final int subscriptionTimeoutMultiplier; private final String serverGroup; - private final List<LocatorAddress> locatorAddresses; - private final List<InetSocketAddress> locators; - private final List<InetSocketAddress> servers; + private final List<HostAndPort> locatorAddresses; + private final List<HostAndPort> locators; + private final List<HostAndPort> servers; private final boolean startDisabled; private final boolean usedByGateway; private final int maxConnections; @@ -157,7 +158,7 @@ public class PoolImpl implements InternalPool { private final ThreadsMonitoring threadMonitoring; public static PoolImpl create(PoolManagerImpl pm, String name, Pool attributes, - List<LocatorAddress> locatorAddresses, InternalDistributedSystem distributedSystem, + List<HostAndPort> locatorAddresses, InternalDistributedSystem distributedSystem, InternalCache cache, ThreadsMonitoring tMonitoring) { PoolImpl pool = new PoolImpl(pm, name, attributes, locatorAddresses, distributedSystem, cache, tMonitoring); @@ -187,7 +188,7 @@ public class PoolImpl implements InternalPool { } protected PoolImpl(PoolManagerImpl pm, String name, Pool attributes, - List<LocatorAddress> locatorAddresses, InternalDistributedSystem distributedSystem, + List<HostAndPort> locatorAddresses, InternalDistributedSystem distributedSystem, InternalCache cache, ThreadsMonitoring threadMonitoring) { this.pm = pm; this.name = name; @@ -224,8 +225,11 @@ public class PoolImpl implements InternalPool { } serverGroup = attributes.getServerGroup(); multiuserSecureModeEnabled = attributes.getMultiuserAuthentication(); - locators = attributes.getLocators(); - servers = attributes.getServers(); + locators = attributes.getLocators().stream() + .map(x -> new HostAndPort(x.getHostName(), x.getPort())).collect(Collectors.toList()); + servers = attributes.getServers().stream() + .map(x -> new HostAndPort(x.getHostName(), x.getPort())).collect( + Collectors.toList()); startDisabled = ((PoolFactoryImpl.PoolAttributes) attributes).startDisabled || !pm.isNormal(); usedByGateway = ((PoolFactoryImpl.PoolAttributes) attributes).isGateway(); @@ -478,7 +482,7 @@ public class PoolImpl implements InternalPool { @Override public List<InetSocketAddress> getLocators() { - return locators; + return locators.stream().map(x -> x.getSocketInetAddress()).collect(Collectors.toList()); } @Override @@ -488,7 +492,7 @@ public class PoolImpl implements InternalPool { @Override public List<InetSocketAddress> getServers() { - return servers; + return servers.stream().map(x -> x.getSocketInetAddress()).collect(Collectors.toList()); } public GatewaySender getGatewaySender() { diff --git a/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java b/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java index f5860c9..29bde13 100644 --- a/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java +++ b/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java @@ -60,6 +60,7 @@ import org.apache.geode.cache.Cache; import org.apache.geode.cache.client.internal.locator.LocatorStatusRequest; import org.apache.geode.cache.client.internal.locator.LocatorStatusResponse; import org.apache.geode.distributed.internal.InternalLocator; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.distributed.internal.tcpserver.TcpSocketCreator; import org.apache.geode.internal.DistributionLocator; @@ -324,7 +325,8 @@ public class LocatorLauncher extends AbstractLauncher<String> { InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()); - return (LocatorStatusResponse) client.requestToServer(bindAddress, port, + return (LocatorStatusResponse) client.requestToServer( + new HostAndPort(bindAddress.getHostAddress(), port), new LocatorStatusRequest(), timeout, true); } catch (ClassNotFoundException e) { throw new RuntimeException(e); diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java index ac2bf6b..565d247 100755 --- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java +++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java @@ -33,8 +33,6 @@ import org.jgroups.util.UUID; import org.apache.geode.InternalGemFireError; import org.apache.geode.annotations.Immutable; import org.apache.geode.annotations.VisibleForTesting; -import org.apache.geode.annotations.internal.MutableForTesting; -import org.apache.geode.cache.client.ServerConnectivityException; import org.apache.geode.distributed.DistributedMember; import org.apache.geode.distributed.DurableClientAttributes; import org.apache.geode.distributed.Role; @@ -66,11 +64,6 @@ public class InternalDistributedMember public static final MemberIdentifierFactoryImpl MEMBER_IDENTIFIER_FACTORY = new MemberIdentifierFactoryImpl(); - /** Retrieves an InetAddress given the provided hostname */ - @MutableForTesting - protected static HostnameResolver hostnameResolver = - (location) -> InetAddress.getByName(location.getHostName()); - private final MemberIdentifier memberIdentifier; @VisibleForTesting @@ -145,7 +138,8 @@ public class InternalDistributedMember /** * Creates a new InternalDistributedMember for use in notifying listeners in client - * caches. The version information in the ID is set to Version.CURRENT. + * caches. The version information in the ID is set to Version.CURRENT and the host name + * is left unresolved (DistributedMember doesn't expose the InetAddress). * * @param location the coordinates of the server */ @@ -153,23 +147,13 @@ public class InternalDistributedMember public InternalDistributedMember(ServerLocation location) { memberIdentifier = MEMBER_IDENTIFIER_FACTORY.create( - MemberDataBuilder.newBuilder(getInetAddress(location), location.getHostName()) + MemberDataBuilder.newBuilderForLocalHost(location.getHostName()) .setMembershipPort(location.getPort()) .setNetworkPartitionDetectionEnabled(false) .setPreferredForCoordinator(true) .build()); } - private static InetAddress getInetAddress(ServerLocation location) { - final InetAddress addr; - try { - addr = hostnameResolver.getInetAddress(location); - } catch (UnknownHostException e) { - throw new ServerConnectivityException("Unable to resolve server location " + location, e); - } - return addr; - } - /** * Create a InternalDistributedMember referring to the current host (as defined by the given * string) with additional info including optional connection name and an optional unique string. @@ -267,10 +251,6 @@ public class InternalDistributedMember return mbr; } - public static void setHostnameResolver(final HostnameResolver hostnameResolver) { - InternalDistributedMember.hostnameResolver = hostnameResolver; - } - /** * Returns this client member's durable attributes or null if no durable attributes were created. */ diff --git a/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java b/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java index 82c0e26..2842794 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java +++ b/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java @@ -27,6 +27,7 @@ import org.apache.geode.SystemFailure; import org.apache.geode.annotations.internal.MakeNotStatic; import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.InternalLocator; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.net.SocketCreatorFactory; import org.apache.geode.internal.security.SecurableCommunicationChannel; @@ -73,8 +74,9 @@ public class DistributionLocator { new TcpClient(SocketCreatorFactory .getSocketCreatorForComponent(SecurableCommunicationChannel.LOCATOR), InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), - InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()).stop(addr, - port); + InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()) + .stop(new HostAndPort(addr.getHostName(), + port)); } catch (ConnectException ignore) { // must not be running } diff --git a/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java b/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java index 33a15a5..624b04c 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java +++ b/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java @@ -79,6 +79,7 @@ import org.apache.geode.distributed.internal.DistributionConfigImpl; import org.apache.geode.distributed.internal.HighPriorityAckedMessage; import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.admin.remote.TailLogResponse; import org.apache.geode.internal.cache.DiskStoreImpl; @@ -298,7 +299,7 @@ public class SystemAdmin { .getSocketCreatorForComponent(SecurableCommunicationChannel.LOCATOR), InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()) - .stop(addr, port); + .stop(new HostAndPort(addr.getHostName(), port)); } catch (java.net.ConnectException ce) { System.out.println( "Unable to connect to Locator process. Possible causes are that an incorrect bind address/port combination was specified to the stop-locator command or the process is unresponsive."); diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/DistributionLocatorId.java b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/DistributionLocatorId.java index c6f0874..8835115 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/admin/remote/DistributionLocatorId.java +++ b/geode-core/src/main/java/org/apache/geode/internal/admin/remote/DistributionLocatorId.java @@ -16,18 +16,17 @@ package org.apache.geode.internal.admin.remote; import java.net.InetAddress; -import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.validator.routines.InetAddressValidator; import org.apache.geode.InternalGemFireException; import org.apache.geode.distributed.Locator; import org.apache.geode.distributed.internal.DistributionConfig; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.admin.SSLConfig; import org.apache.geode.internal.inet.LocalHostUtil; import org.apache.geode.internal.net.SocketCreator; @@ -221,24 +220,15 @@ public class DistributionLocatorId implements java.io.Serializable { * ipString Otherwise we create InetAddress each time. * **/ - public InetSocketAddress getHost() throws UnknownHostException { - if (this.hostname != null) { - boolean isIpString = InetAddressValidator.getInstance().isValid(this.hostname); - if (isIpString) { - if (this.host == null) { - this.host = InetAddress.getByName(this.hostname); - } - return new InetSocketAddress(this.host, this.port); - } - } - - if (this.hostname == null) { - if (this.host != null) { - return new InetSocketAddress(this.host, this.port); - } + public HostAndPort getHost() throws UnknownHostException { + if (host == null && hostname == null) { throw new UnknownHostException("locator ID has no hostname or resolved inet address"); } - return new InetSocketAddress(this.hostname, this.port); + String addr = hostname; + if (host != null) { + addr = host.getHostAddress(); + } + return new HostAndPort(addr, port); } /** returns the host name */ diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java index 88be1f8..d4aff7f 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java @@ -2651,7 +2651,8 @@ public class GemFireCacheImpl implements InternalCache, InternalClientCache, Has if (result == null) { result = new HashSet<>(); } - result.add(new InetSocketAddress(serverLocation.getHostName(), serverLocation.getPort())); + result.add(InetSocketAddress.createUnresolved(serverLocation.getHostName(), + serverLocation.getPort())); } } if (result == null) { diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java index 09be556..708ce2a 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java @@ -22,10 +22,10 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; import org.apache.logging.log4j.Logger; @@ -40,7 +40,7 @@ import org.apache.geode.cache.client.internal.PoolImpl; import org.apache.geode.cache.query.QueryService; import org.apache.geode.cache.wan.GatewaySender; import org.apache.geode.distributed.internal.InternalDistributedSystem; -import org.apache.geode.distributed.internal.tcpserver.LocatorAddress; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.monitoring.ThreadsMonitoring; import org.apache.geode.logging.internal.log4j.api.LogService; import org.apache.geode.pdx.internal.TypeRegistry; @@ -58,7 +58,7 @@ public class PoolFactoryImpl implements InternalPoolFactory { */ private PoolAttributes attributes = new PoolAttributes(); - private final List<LocatorAddress> locatorAddresses = new ArrayList<>(); + private final List<HostAndPort> locatorAddresses = new ArrayList<>(); /** * The cache that created this factory @@ -286,9 +286,9 @@ public class PoolFactoryImpl implements InternalPoolFactory { throw new IllegalStateException( "A server has already been added. You can only add locators or servers; not both."); } - InetSocketAddress isa = getInetSocketAddress(host, port); - attributes.locators.add(isa); - locatorAddresses.add(new LocatorAddress(isa, host)); + HostAndPort address = new HostAndPort(host, port); + attributes.locators.add(address); + locatorAddresses.add(address); return this; } @@ -298,7 +298,7 @@ public class PoolFactoryImpl implements InternalPoolFactory { throw new IllegalStateException( "A locator has already been added. You can only add locators or servers; not both."); } - attributes.servers.add(getInetSocketAddress(host, port)); + attributes.servers.add(new HostAndPort(host, port)); return this; } @@ -332,10 +332,11 @@ public class PoolFactoryImpl implements InternalPoolFactory { setSubscriptionAckInterval(cp.getSubscriptionAckInterval()); setServerGroup(cp.getServerGroup()); setMultiuserAuthentication(cp.getMultiuserAuthentication()); - for (InetSocketAddress inetSocketAddress : cp.getLocators()) { - addLocator(inetSocketAddress.getHostName(), inetSocketAddress.getPort()); + for (InetSocketAddress address : cp.getLocators()) { + addLocator(address.getHostName(), address.getPort()); } - attributes.servers.addAll(cp.getServers()); + attributes.servers.addAll(cp.getServers().stream() + .map(x -> new HostAndPort(x.getHostName(), x.getPort())).collect(Collectors.toList())); } public void init(GatewaySender sender) { @@ -430,8 +431,8 @@ public class PoolFactoryImpl implements InternalPoolFactory { int subscriptionTimeoutMultipler = DEFAULT_SUBSCRIPTION_TIMEOUT_MULTIPLIER; public String serverGroup = DEFAULT_SERVER_GROUP; boolean multiuserSecureModeEnabled = DEFAULT_MULTIUSER_AUTHENTICATION; - public ArrayList<InetSocketAddress> locators = new ArrayList<>(); - public ArrayList<InetSocketAddress> servers = new ArrayList<>(); + public ArrayList<HostAndPort> locators = new ArrayList<>(); + public ArrayList<HostAndPort> servers = new ArrayList<>(); public transient boolean startDisabled = false; // only used by junit tests public transient LocatorDiscoveryCallback locatorCallback = null; // only used by tests public GatewaySender gatewaySender = null; @@ -567,7 +568,7 @@ public class PoolFactoryImpl implements InternalPoolFactory { throw new IllegalStateException( "At least one locator or server must be added before a connection pool can be created."); } - return Collections.unmodifiableList(new ArrayList<>(locators)); + return locators.stream().map(x -> x.getSocketInetAddress()).collect(Collectors.toList()); } @Override @@ -582,7 +583,7 @@ public class PoolFactoryImpl implements InternalPoolFactory { "At least one locator or server must be added before a connection pool can be created."); } // needs to return a copy. - return Collections.unmodifiableList(new ArrayList<>(servers)); + return servers.stream().map(x -> x.getSocketInetAddress()).collect(Collectors.toList()); } @Override diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java index 64eaa1c..2d87ab3 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdater.java @@ -59,6 +59,7 @@ import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.InternalDistributedSystem.DisconnectListener; import org.apache.geode.distributed.internal.ServerLocation; import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.Assert; import org.apache.geode.internal.InternalDataSerializer; import org.apache.geode.internal.InternalInstantiator; @@ -315,7 +316,8 @@ public class CacheClientUpdater extends LoggingThread implements ClientUpdater, int socketBufferSize = Integer.getInteger("BridgeServer.SOCKET_BUFFER_SIZE", DEFAULT_SOCKET_BUFFER_SIZE); - mySock = socketCreator.connectForClient(location.getHostName(), location.getPort(), + mySock = socketCreator.connectForClient( + new HostAndPort(location.getHostName(), location.getPort()), handshakeTimeout, socketBufferSize); mySock.setTcpNoDelay(true); mySock.setSendBufferSize(socketBufferSize); diff --git a/geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java b/geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java index 427e758..0c5df6a 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java +++ b/geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java @@ -73,6 +73,7 @@ import org.apache.geode.distributed.ClientSocketFactory; import org.apache.geode.distributed.internal.DistributionConfig; import org.apache.geode.distributed.internal.DistributionConfigImpl; import org.apache.geode.distributed.internal.tcpserver.ConnectionWatcher; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpSocketCreatorImpl; import org.apache.geode.internal.ClassPathLoader; import org.apache.geode.internal.admin.SSLConfig; @@ -613,23 +614,23 @@ public class SocketCreator extends TcpSocketCreatorImpl { /** * Return a client socket. This method is used by client/server clients. */ - public Socket connectForClient(String host, int port, int timeout) throws IOException { - return connect(InetAddress.getByName(host), port, timeout, null, true, -1); + public Socket connectForClient(HostAndPort addr, int timeout) throws IOException { + return connect(addr, timeout, null, true, -1); } /** * Return a client socket. This method is used by client/server clients. */ - public Socket connectForClient(String host, int port, int timeout, int socketBufferSize) + public Socket connectForClient(HostAndPort addr, int timeout, int socketBufferSize) throws IOException { - return connect(InetAddress.getByName(host), port, timeout, null, true, socketBufferSize); + return connect(addr, timeout, null, true, socketBufferSize); } /** * Return a client socket. This method is used by peers. */ - public Socket connectForServer(InetAddress inetadd, int port) throws IOException { - return connect(inetadd, port, 0, null, false, -1); + public Socket connectForServer(HostAndPort addr) throws IOException { + return connect(addr, 0, null, false, -1); } /** @@ -637,10 +638,10 @@ public class SocketCreator extends TcpSocketCreatorImpl { * <i>timeout</i> is ignored if SSL is being used, as there is no timeout argument in the ssl * socket factory */ - public Socket connect(InetAddress inetadd, int port, int timeout, + public Socket connect(HostAndPort addr, int timeout, ConnectionWatcher optionalWatcher, boolean clientSide, int socketBufferSize) throws IOException { - return connect(inetadd, port, timeout, optionalWatcher, clientSide, socketBufferSize, + return connect(addr, timeout, optionalWatcher, clientSide, socketBufferSize, sslConfig.isEnabled()); } @@ -650,21 +651,21 @@ public class SocketCreator extends TcpSocketCreatorImpl { * socket factory */ @Override - public Socket connect(InetAddress inetadd, int port, int timeout, + public Socket connect(HostAndPort addr, int timeout, ConnectionWatcher optionalWatcher, boolean clientSide, int socketBufferSize, boolean sslConnection) throws IOException { printConfig(); if (!sslConnection) { - return super.connect(inetadd, port, timeout, optionalWatcher, clientSide, socketBufferSize, + return super.connect(addr, timeout, optionalWatcher, clientSide, socketBufferSize, sslConnection); } // create an SSL connection Socket socket; - SocketAddress sockaddr = new InetSocketAddress(inetadd, port); + SocketAddress sockaddr = addr.getSocketInetAddress(); if (this.sslContext == null) { throw new GemFireConfigException( "SSL not configured correctly, Please look at previous error"); @@ -698,9 +699,11 @@ public class SocketCreator extends TcpSocketCreatorImpl { } @Override - protected Socket createCustomClientSocket(InetAddress inetadd, int port) throws IOException { + protected Socket createCustomClientSocket(HostAndPort addr) throws IOException { if (this.clientSocketFactory != null) { - return this.clientSocketFactory.createSocket(inetadd, port); + InetSocketAddress inetSocketAddress = addr.getSocketInetAddress(); + return this.clientSocketFactory.createSocket(inetSocketAddress.getAddress(), + inetSocketAddress.getPort()); } return null; } diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/ContextAwareSSLRMIClientSocketFactory.java b/geode-core/src/main/java/org/apache/geode/management/internal/ContextAwareSSLRMIClientSocketFactory.java index cadb2b2..7025edc 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/ContextAwareSSLRMIClientSocketFactory.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/ContextAwareSSLRMIClientSocketFactory.java @@ -27,6 +27,7 @@ import java.util.Properties; import javax.rmi.ssl.SslRMIClientSocketFactory; import org.apache.geode.annotations.Immutable; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.admin.SSLConfig; import org.apache.geode.internal.net.SSLConfigurationFactory; import org.apache.geode.internal.net.SocketCreator; @@ -54,7 +55,7 @@ public class ContextAwareSSLRMIClientSocketFactory implements RMIClientSocketFac try { socketCreator = SocketCreatorFactory.getSocketCreatorForComponent(SecurableCommunicationChannel.JMX); - return socketCreator.connectForClient(host, port, 0); + return socketCreator.connectForClient(new HostAndPort(host, port), 0); } catch (Exception exception) { try { // In gfsh the ssl config is stored within the GEODE_SSL_CONFIG_PROPERTIES system property. @@ -64,7 +65,7 @@ public class ContextAwareSSLRMIClientSocketFactory implements RMIClientSocketFac SSLConfig sslConfig = SSLConfigurationFactory .getSSLConfigForComponent(gfProperties, SecurableCommunicationChannel.JMX); socketCreator = new SocketCreator(sslConfig); - return socketCreator.connectForClient(host, port, 0); + return socketCreator.connectForClient(new HostAndPort(host, port), 0); } catch (Exception finalException) { // Back off and use the default factory (javax.net.ssl properties are used to configure // SSL). diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/JmxManagerLocatorRequest.java b/geode-core/src/main/java/org/apache/geode/management/internal/JmxManagerLocatorRequest.java index 2ce9a80..cd87917 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/JmxManagerLocatorRequest.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/JmxManagerLocatorRequest.java @@ -17,11 +17,10 @@ package org.apache.geode.management.internal; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; -import java.net.InetAddress; -import java.net.InetSocketAddress; import java.util.Properties; import org.apache.geode.annotations.Immutable; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.InternalDataSerializer; import org.apache.geode.internal.admin.SSLConfig; @@ -77,8 +76,6 @@ public class JmxManagerLocatorRequest implements DataSerializableFixedID { */ public static JmxManagerLocatorResponse send(String locatorHost, int locatorPort, int msTimeout, Properties sslConfigProps) throws IOException, ClassNotFoundException { - InetAddress networkAddress = InetAddress.getByName(locatorHost); - InetSocketAddress inetSockAddr = new InetSocketAddress(networkAddress, locatorPort); // simply need to turn sslConfigProps into sslConfig for locator SSLConfig sslConfig = SSLConfigurationFactory.getSSLConfigForComponent(sslConfigProps, @@ -87,7 +84,8 @@ public class JmxManagerLocatorRequest implements DataSerializableFixedID { TcpClient client = new TcpClient(socketCreator, InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()); - Object responseFromServer = client.requestToServer(inetSockAddr, SINGLETON, msTimeout, true); + Object responseFromServer = client.requestToServer(new HostAndPort(locatorHost, locatorPort), + SINGLETON, msTimeout, true); if (responseFromServer instanceof JmxManagerLocatorResponse) return (JmxManagerLocatorResponse) responseFromServer; diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/api/GeodeConnectionConfig.java b/geode-core/src/main/java/org/apache/geode/management/internal/api/GeodeConnectionConfig.java index 8cfbeb2..183c913 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/api/GeodeConnectionConfig.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/api/GeodeConnectionConfig.java @@ -34,6 +34,7 @@ import org.apache.geode.cache.execute.FunctionService; import org.apache.geode.cache.execute.ResultCollector; import org.apache.geode.distributed.internal.DistributionConfig; import org.apache.geode.distributed.internal.membership.InternalDistributedMember; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.InternalDataSerializer; import org.apache.geode.internal.admin.SSLConfig; @@ -107,7 +108,8 @@ public class GeodeConnectionConfig extends ConnectionConfig { cmsInfo = null; for (InetSocketAddress locator : locators) { try { - cmsInfo = (ClusterManagementServiceInfo) client.requestToServer(locator, + cmsInfo = (ClusterManagementServiceInfo) client.requestToServer( + new HostAndPort(locator.getHostName(), locator.getPort()), new ClusterManagementServiceInfoRequest(), 1000, true); // do not try anymore if we found one that has cms running diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ClusterConfigurationStatusRetriever.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ClusterConfigurationStatusRetriever.java index 5e72d0d..bceb0fe 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ClusterConfigurationStatusRetriever.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/utils/ClusterConfigurationStatusRetriever.java @@ -16,11 +16,11 @@ package org.apache.geode.management.internal.configuration.utils; import java.io.IOException; -import java.net.InetAddress; import java.util.Properties; import java.util.Set; import org.apache.geode.distributed.LocatorLauncher; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.InternalDataSerializer; import org.apache.geode.internal.cache.persistence.PersistentMemberPattern; @@ -37,15 +37,14 @@ public class ClusterConfigurationStatusRetriever { throws ClassNotFoundException, IOException { final StringBuilder buffer = new StringBuilder(); - final InetAddress networkAddress = InetAddress.getByName(locatorHostName); - TcpClient client = new TcpClient( new SocketCreator(SSLConfigurationFactory.getSSLConfigForComponent(configProps, SecurableCommunicationChannel.LOCATOR)), InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()); + HostAndPort locatorAddress = new HostAndPort(locatorHostName, locatorPort); SharedConfigurationStatusResponse statusResponse = - (SharedConfigurationStatusResponse) client.requestToServer(networkAddress, locatorPort, + (SharedConfigurationStatusResponse) client.requestToServer(locatorAddress, new SharedConfigurationStatusRequest(), 10000, true); for (int i = 0; i < NUM_ATTEMPTS_FOR_SHARED_CONFIGURATION_STATUS; i++) { @@ -54,8 +53,8 @@ public class ClusterConfigurationStatusRetriever { || statusResponse.getStatus().equals( org.apache.geode.management.internal.configuration.domain.SharedConfigurationStatus.NOT_STARTED)) { statusResponse = - (SharedConfigurationStatusResponse) client.requestToServer(networkAddress, - locatorPort, new SharedConfigurationStatusRequest(), 10000, true); + (SharedConfigurationStatusResponse) client.requestToServer(locatorAddress, + new SharedConfigurationStatusRequest(), 10000, true); try { Thread.sleep(5000); } catch (InterruptedException e) { diff --git a/geode-core/src/test/java/org/apache/geode/cache/client/internal/PoolImplTest.java b/geode-core/src/test/java/org/apache/geode/cache/client/internal/PoolImplTest.java index 5487f42..80cade1 100644 --- a/geode-core/src/test/java/org/apache/geode/cache/client/internal/PoolImplTest.java +++ b/geode-core/src/test/java/org/apache/geode/cache/client/internal/PoolImplTest.java @@ -37,7 +37,7 @@ import org.apache.geode.cache.client.ServerConnectivityException; import org.apache.geode.cache.client.internal.pooling.ConnectionManagerImpl; import org.apache.geode.distributed.internal.DistributionConfig; import org.apache.geode.distributed.internal.InternalDistributedSystem; -import org.apache.geode.distributed.internal.tcpserver.LocatorAddress; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.internal.cache.PoolFactoryImpl; import org.apache.geode.internal.cache.PoolManagerImpl; @@ -154,7 +154,7 @@ public class PoolImplTest { final ThreadsMonitoring tMonitoring = mock(ThreadsMonitoring.class); - return PoolImpl.create(poolManager, "pool", poolAttributes, new LinkedList<LocatorAddress>(), + return PoolImpl.create(poolManager, "pool", poolAttributes, new LinkedList<HostAndPort>(), internalDistributedSystem, internalCache, tMonitoring); } diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdaterJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdaterJUnitTest.java index d2572e9..2e71bdb 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdaterJUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/CacheClientUpdaterJUnitTest.java @@ -31,6 +31,7 @@ import org.apache.geode.cache.client.internal.EndpointManager; import org.apache.geode.cache.client.internal.QueueManager; import org.apache.geode.distributed.DistributedSystem; import org.apache.geode.distributed.internal.ServerLocation; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.cache.tier.ClientSideHandshake; import org.apache.geode.internal.net.SocketCreator; import org.apache.geode.test.junit.categories.ClientSubscriptionTest; @@ -57,7 +58,7 @@ public class CacheClientUpdaterJUnitTest { // engineer a failure to connect via SocketCreator SocketCreator socketCreator = mock(SocketCreator.class); - when(socketCreator.connectForClient(any(String.class), any(Integer.class), + when(socketCreator.connectForClient(any(HostAndPort.class), any(Integer.class), any(Integer.class))).thenThrow(new SocketException("ouch")); // mock some stats that we can then use to ensure that they're closed when the problem occurs diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSUtilTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSUtilTest.java index f448aae..4a1ed00 100644 --- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSUtilTest.java +++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSUtilTest.java @@ -20,7 +20,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.net.InetAddress; -import java.net.InetSocketAddress; import java.util.List; import junitparams.JUnitParamsRunner; @@ -29,7 +28,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.apache.geode.distributed.internal.membership.api.MembershipConfigurationException; -import org.apache.geode.distributed.internal.membership.gms.membership.HostAddress; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; @RunWith(JUnitParamsRunner.class) public class GMSUtilTest { @@ -49,8 +48,7 @@ public class GMSUtilTest { parseLocators(RESOLVEABLE_LOOPBACK_HOST + "[" + PORT + "]", InetAddress.getLoopbackAddress())) .contains( - new HostAddress(new InetSocketAddress(RESOLVEABLE_LOOPBACK_HOST, PORT), - RESOLVEABLE_LOOPBACK_HOST)); + new HostAndPort(RESOLVEABLE_LOOPBACK_HOST, PORT)); } @Test @@ -73,11 +71,10 @@ public class GMSUtilTest { @Test public void unresolveableAddressNotChecked() throws MembershipConfigurationException { - final List<HostAddress> hostAddresses = + final List<HostAndPort> HostAndPortes = parseLocators(UNRESOLVEABLE_HOST + "[" + PORT + "]", (InetAddress) null); - assertThat(hostAddresses) - .contains(new HostAddress(new InetSocketAddress(UNRESOLVEABLE_HOST, PORT), - UNRESOLVEABLE_HOST)); + assertThat(HostAndPortes) + .contains(new HostAndPort(UNRESOLVEABLE_HOST, PORT)); } @Test @@ -86,8 +83,7 @@ public class GMSUtilTest { final String locatorsString = RESOLVEABLE_LOOPBACK_HOST + "[" + validPort + "]"; assertThat(parseLocators(locatorsString, InetAddress.getLoopbackAddress())) .contains( - new HostAddress(new InetSocketAddress(RESOLVEABLE_LOOPBACK_HOST, validPort), - RESOLVEABLE_LOOPBACK_HOST)); + new HostAndPort(RESOLVEABLE_LOOPBACK_HOST, validPort)); } @Test @@ -106,7 +102,7 @@ public class GMSUtilTest { throws MembershipConfigurationException { assertThat(parseLocators(locatorsString, (InetAddress) null)) .contains( - new HostAddress(new InetSocketAddress("127.0.0.1", 1234), "127.0.0.1")); + new HostAndPort("127.0.0.1", 1234)); } @Test @@ -115,23 +111,20 @@ public class GMSUtilTest { throws MembershipConfigurationException { assertThat(parseLocators(locatorsString, (InetAddress) null)) .contains( - new HostAddress(new InetSocketAddress("fdf0:76cf:a0ed:9449::5", 12233), - "fdf0:76cf:a0ed:9449::5")); + new HostAndPort("fdf0:76cf:a0ed:9449::5", 12233)); } @Test public void multipleHosts() throws MembershipConfigurationException { - final List<HostAddress> addys = + final List<HostAndPort> addys = parseLocators( "geodecluster-sample-locator-0.geodecluster-sample-locator[10334]," + "geodecluster-sample-locator-1.geodecluster-sample-locator[10334]," + "geodecluster-sample-locator-2.geodecluster-sample-locator[10334]", (InetAddress) null); assertThat(addys).contains( - new HostAddress( - new InetSocketAddress("geodecluster-sample-locator-2.geodecluster-sample-locator", - 10334), - "geodecluster-sample-locator-2.geodecluster-sample-locator")); + new HostAndPort("geodecluster-sample-locator-2.geodecluster-sample-locator", + 10334)); assertThat(addys).hasSize(3); } @@ -149,12 +142,11 @@ public class GMSUtilTest { @Test public void nonLoopbackBindAddressDoesNotResolveLocatorAddress() throws MembershipConfigurationException { - final List<HostAddress> hostAddresses = + final List<HostAndPort> hostAndPorts = parseLocators(UNRESOLVEABLE_HOST + "[" + PORT + "]", RESOLVEABLE_NON_LOOPBACK_HOST); - assertThat(hostAddresses) - .contains(new HostAddress(new InetSocketAddress(UNRESOLVEABLE_HOST, PORT), - UNRESOLVEABLE_HOST)); + assertThat(hostAndPorts) + .contains(new HostAndPort(UNRESOLVEABLE_HOST, PORT)); } } diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java index e98dfde..c65f8ef 100644 --- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java +++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java @@ -35,7 +35,6 @@ import static org.mockito.Mockito.when; import java.io.IOException; import java.net.InetAddress; -import java.net.InetSocketAddress; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -82,6 +81,7 @@ import org.apache.geode.distributed.internal.membership.gms.messages.NetworkPart import org.apache.geode.distributed.internal.membership.gms.messages.RemoveMemberMessage; import org.apache.geode.distributed.internal.membership.gms.messages.ViewAckMessage; import org.apache.geode.distributed.internal.membership.gms.util.MemberIdentifierUtil; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.serialization.Version; import org.apache.geode.test.junit.categories.MembershipTest; @@ -211,7 +211,7 @@ public class GMSJoinLeaveJUnitTest { initMocks(false); when(mockConfig.getLocatorWaitTime()).thenReturn(15000); - when(locatorClient.requestToServer(isA(InetSocketAddress.class), + when(locatorClient.requestToServer(isA(HostAndPort.class), isA(FindCoordinatorRequest.class), anyInt(), anyBoolean())) .thenThrow(new IOException("Connection refused")); @@ -222,7 +222,7 @@ public class GMSJoinLeaveJUnitTest { .isInstanceOf(MemberStartupException.class) .hasMessageContaining("Interrupted while trying to contact locators"); assertThat(Thread.currentThread().interrupted()).isTrue(); - verify(locatorClient, times(1)).requestToServer(isA(InetSocketAddress.class), + verify(locatorClient, times(1)).requestToServer(isA(HostAndPort.class), isA(FindCoordinatorRequest.class), anyInt(), anyBoolean()); } @@ -429,7 +429,7 @@ public class GMSJoinLeaveJUnitTest { @Test public void multipleLocatorsWithSameAddressAreCanonicalized() throws Exception { - List<HostAddress> locators = GMSUtil.parseLocators( + List<HostAndPort> locators = GMSUtil.parseLocators( "localhost[1234],localhost[1234],localhost[1234]", (InetAddress) null); assertThat(locators.size()).isEqualTo(1); } @@ -1428,7 +1428,7 @@ public class GMSJoinLeaveJUnitTest { FindCoordinatorResponse fcr = new FindCoordinatorResponse(mockMembers[0], mockMembers[0], false, null, registrants, false, true, null); - when(locatorClient.requestToServer(isA(InetSocketAddress.class), + when(locatorClient.requestToServer(isA(HostAndPort.class), isA(FindCoordinatorRequest.class), anyInt(), anyBoolean())) .thenReturn(fcr); @@ -1449,7 +1449,7 @@ public class GMSJoinLeaveJUnitTest { JoinResponseMessage jrm = new JoinResponseMessage(mockMembers[0], view, 0); gmsJoinLeave.setJoinResponseMessage(jrm); - when(locatorClient.requestToServer(eq(new InetSocketAddress("localhost", 12346)), + when(locatorClient.requestToServer(eq(new HostAndPort("localhost", 12346)), isA(FindCoordinatorRequest.class), anyInt(), anyBoolean())) .thenReturn(fcr); diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSUtil.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSUtil.java index bba8f76..b09cb4e 100644 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSUtil.java +++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSUtil.java @@ -28,7 +28,7 @@ import java.util.StringTokenizer; import org.apache.geode.distributed.internal.membership.api.MemberIdentifier; import org.apache.geode.distributed.internal.membership.api.MembershipConfigurationException; -import org.apache.geode.distributed.internal.membership.gms.membership.HostAddress; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.inet.LocalHostUtil; import org.apache.geode.internal.serialization.DeserializationContext; import org.apache.geode.internal.serialization.SerializationContext; @@ -46,7 +46,7 @@ public class GMSUtil { * @param bindAddress optional address to check for loopback compatibility * @return addresses of locators */ - public static List<HostAddress> parseLocators(String locatorsString, String bindAddress) + public static List<HostAndPort> parseLocators(String locatorsString, String bindAddress) throws MembershipConfigurationException { InetAddress addr = null; @@ -82,12 +82,10 @@ public class GMSUtil { * @param locatorsString a DistributionConfig "locators" string * @param bindAddress optional address to check for loopback compatibility * @return addresses of locators - * - * @see org.apache.geode.distributed.ConfigurationProperties#LOCATORS for format */ - public static List<HostAddress> parseLocators(String locatorsString, InetAddress bindAddress) + public static List<HostAndPort> parseLocators(String locatorsString, InetAddress bindAddress) throws MembershipConfigurationException { - List<HostAddress> result = new ArrayList<>(2); + List<HostAndPort> result = new ArrayList<>(2); Set<InetSocketAddress> inetAddresses = new HashSet<>(); String host; final boolean isLoopback = ((bindAddress != null) && bindAddress.isLoopbackAddress()); @@ -149,10 +147,10 @@ public class GMSUtil { } } - HostAddress la = new HostAddress(isa, host); + HostAndPort hostAndPort = new HostAndPort(host, port); if (!inetAddresses.contains(isa)) { inetAddresses.add(isa); - result.add(la); + result.add(hostAndPort); } } diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MemberDataBuilderImpl.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MemberDataBuilderImpl.java index b0eca8f..3776175 100644 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MemberDataBuilderImpl.java +++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MemberDataBuilderImpl.java @@ -76,13 +76,13 @@ public class MemberDataBuilderImpl implements MemberDataBuilder { this.hostName = hostName; } - private MemberDataBuilderImpl(String fakeHostName) { + private MemberDataBuilderImpl(String hostName) { try { inetAddress = LocalHostUtil.getLocalHost(); } catch (UnknownHostException e2) { throw new RuntimeException("Unable to resolve local host address", e2); } - hostName = fakeHostName; + this.hostName = hostName; } public MemberDataBuilderImpl setMembershipPort(int membershipPort) { diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MemberIdentifierImpl.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MemberIdentifierImpl.java index 2268b5a..d9553f6 100644 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MemberIdentifierImpl.java +++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MemberIdentifierImpl.java @@ -436,9 +436,9 @@ public class MemberIdentifierImpl implements MemberIdentifier, DataSerializableF String host; InetAddress add = getInetAddress(); - if (add.isMulticastAddress() || useIpAddress) + if ((add != null) && (add.isMulticastAddress() || useIpAddress)) { host = add.getHostAddress(); - else { + } else { String hostName = memberData.getHostName(); InetAddressValidator inetAddressValidator = InetAddressValidator.getInstance(); boolean isIpAddress = inetAddressValidator.isValid(hostName); diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java index 803f4de..98c751a 100644 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java +++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java @@ -68,6 +68,7 @@ import org.apache.geode.distributed.internal.membership.gms.messages.HeartbeatRe import org.apache.geode.distributed.internal.membership.gms.messages.SuspectMembersMessage; import org.apache.geode.distributed.internal.membership.gms.messages.SuspectRequest; import org.apache.geode.distributed.internal.tcpserver.ConnectionWatcher; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpSocketCreator; import org.apache.geode.internal.lang.JavaWorkarounds; import org.apache.geode.internal.serialization.Version; @@ -574,7 +575,7 @@ public class GMSHealthMonitor<ID extends MemberIdentifier> implements HealthMoni suspectMember.getInetAddress(), port); clientSocket = socketCreator - .connect(suspectMember.getInetAddress(), port, (int) memberTimeout, + .connect(new HostAndPort(suspectMember.getHostName(), port), (int) memberTimeout, new ConnectTimeoutTask(services.getTimer(), memberTimeout), false, -1, false); clientSocket.setTcpNoDelay(true); passed = doTCPCheckMember(suspectMember, clientSocket); diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java index eb2939b..adf8660 100644 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java +++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java @@ -23,7 +23,6 @@ import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.InetAddress; -import java.net.InetSocketAddress; import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; @@ -45,8 +44,8 @@ import org.apache.geode.distributed.internal.membership.gms.GMSMembershipView; import org.apache.geode.distributed.internal.membership.gms.GMSUtil; import org.apache.geode.distributed.internal.membership.gms.Services; import org.apache.geode.distributed.internal.membership.gms.interfaces.Locator; -import org.apache.geode.distributed.internal.membership.gms.membership.HostAddress; import org.apache.geode.distributed.internal.membership.gms.messenger.GMSMemberWrapper; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.distributed.internal.tcpserver.TcpHandler; import org.apache.geode.distributed.internal.tcpserver.TcpServer; @@ -73,7 +72,7 @@ public class GMSLocator<ID extends MemberIdentifier> implements Locator<ID>, Tcp private final boolean networkPartitionDetectionEnabled; private final String securityUDPDHAlgo; private final String locatorString; - private final List<HostAddress> locators; + private final List<HostAndPort> locators; private final MembershipLocatorStatistics locatorStats; private final Set<ID> registrants = new HashSet<>(); private final Map<GMSMemberWrapper, byte[]> publicKeys = @@ -412,8 +411,8 @@ public class GMSLocator<ID extends MemberIdentifier> implements Locator<ID>, Tcp } private boolean recoverFromOtherLocators() { - for (HostAddress other : locators) { - if (recover(other.getSocketInetAddress())) { + for (HostAndPort other : locators) { + if (recover(other)) { logger.info("Peer locator recovered state from {}", other); return true; } @@ -421,10 +420,10 @@ public class GMSLocator<ID extends MemberIdentifier> implements Locator<ID>, Tcp return false; } - private boolean recover(InetSocketAddress other) { + private boolean recover(HostAndPort other) { try { logger.info("Peer locator attempting to recover from {}", other); - Object response = locatorClient.requestToServer(other.getAddress(), other.getPort(), + Object response = locatorClient.requestToServer(other, new GetViewRequest(), 20000, true); if (response instanceof GetViewResponse) { view = ((GetViewResponse<ID>) response).getView(); diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/MembershipLocatorImpl.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/MembershipLocatorImpl.java index 999e6cb..81f3e80 100644 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/MembershipLocatorImpl.java +++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/MembershipLocatorImpl.java @@ -37,6 +37,7 @@ import org.apache.geode.distributed.internal.membership.api.MembershipLocator; import org.apache.geode.distributed.internal.membership.api.MembershipLocatorStatistics; import org.apache.geode.distributed.internal.membership.gms.GMSMembership; import org.apache.geode.distributed.internal.membership.gms.Services; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.ProtocolChecker; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.distributed.internal.tcpserver.TcpHandler; @@ -176,7 +177,8 @@ public class MembershipLocatorImpl<ID extends MemberIdentifier> implements Membe if (isAlive()) { logger.info("Stopping {}", this); try { - locatorClient.stop(((InetSocketAddress) getBindAddress()).getAddress(), getPort()); + locatorClient + .stop(new HostAndPort(((InetSocketAddress) getBindAddress()).getHostName(), getPort())); } catch (ConnectException ignore) { // must not be running } diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java index 35c8f2c..95b3e3a 100644 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java +++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java @@ -20,7 +20,6 @@ import static org.apache.geode.internal.serialization.DataSerializableFixedID.LE import static org.apache.geode.internal.serialization.DataSerializableFixedID.REMOVE_MEMBER_REQUEST; import java.io.IOException; -import java.net.InetSocketAddress; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -62,6 +61,7 @@ import org.apache.geode.distributed.internal.membership.gms.messages.LeaveReques import org.apache.geode.distributed.internal.membership.gms.messages.NetworkPartitionMessage; import org.apache.geode.distributed.internal.membership.gms.messages.RemoveMemberMessage; import org.apache.geode.distributed.internal.membership.gms.messages.ViewAckMessage; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.serialization.Version; import org.apache.geode.logging.internal.executors.LoggingExecutors; @@ -179,7 +179,7 @@ public class GMSJoinLeave<ID extends MemberIdentifier> implements JoinLeave<ID> */ private GMSMembershipView<ID> lastConflictingView; - private List<HostAddress> locators; + private List<HostAndPort> locators; /** * a list of join/leave/crashes @@ -1140,10 +1140,9 @@ public class GMSJoinLeave<ID extends MemberIdentifier> implements JoinLeave<ID> state.locatorsContacted = 0; do { - for (HostAddress laddr : locators) { + for (HostAndPort laddr : locators) { try { - InetSocketAddress addr = laddr.getSocketInetAddress(); - Object o = locatorClient.requestToServer(addr, request, connectTimeout, true); + Object o = locatorClient.requestToServer(laddr, request, connectTimeout, true); FindCoordinatorResponse<ID> response = (o instanceof FindCoordinatorResponse) ? (FindCoordinatorResponse<ID>) o : null; if (response != null) { diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/HostAddress.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/HostAddress.java deleted file mode 100644 index 3edde3b..0000000 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/HostAddress.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.distributed.internal.membership.gms.membership; - -import java.net.InetSocketAddress; - -import org.apache.geode.distributed.internal.tcpserver.LocatorAddress; - -public class HostAddress extends LocatorAddress { - - public HostAddress(InetSocketAddress loc, String locStr) { - super(loc, locStr); - } - -} diff --git a/geode-protobuf/src/integrationTest/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheConnectionIntegrationTest.java b/geode-protobuf/src/integrationTest/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheConnectionIntegrationTest.java index 2a2d2b5..a8d7d7a 100644 --- a/geode-protobuf/src/integrationTest/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheConnectionIntegrationTest.java +++ b/geode-protobuf/src/integrationTest/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheConnectionIntegrationTest.java @@ -60,6 +60,7 @@ import org.apache.geode.cache.RegionFactory; import org.apache.geode.cache.server.CacheServer; import org.apache.geode.distributed.ConfigurationProperties; import org.apache.geode.distributed.internal.InternalDistributedSystem; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.AvailablePortHelper; import org.apache.geode.internal.admin.SSLConfig; import org.apache.geode.internal.cache.InternalCacheServer; @@ -272,6 +273,6 @@ public class CacheConnectionIntegrationTest { sslConfigBuilder.setEndpointIdentificationEnabled(false); SocketCreator socketCreator = new SocketCreator(sslConfigBuilder.build()); - return socketCreator.connectForClient("localhost", cacheServerPort, 5000); + return socketCreator.connectForClient(new HostAndPort("localhost", cacheServerPort), 5000); } } diff --git a/geode-protobuf/src/integrationTest/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheOperationsJUnitTest.java b/geode-protobuf/src/integrationTest/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheOperationsJUnitTest.java index b40cabd..5572ced 100644 --- a/geode-protobuf/src/integrationTest/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheOperationsJUnitTest.java +++ b/geode-protobuf/src/integrationTest/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheOperationsJUnitTest.java @@ -53,6 +53,7 @@ import org.apache.geode.cache.CacheFactory; import org.apache.geode.cache.RegionFactory; import org.apache.geode.cache.server.CacheServer; import org.apache.geode.distributed.ConfigurationProperties; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.internal.AvailablePortHelper; import org.apache.geode.internal.admin.SSLConfig; import org.apache.geode.internal.net.SocketCreator; @@ -401,6 +402,6 @@ public class CacheOperationsJUnitTest { sslConfigBuilder.setKeystorePassword("password"); SocketCreator socketCreator = new SocketCreator(sslConfigBuilder.build()); - return socketCreator.connectForClient("localhost", cacheServerPort, 5000); + return socketCreator.connectForClient(new HostAndPort("localhost", cacheServerPort), 5000); } } diff --git a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/StaticSerialization.java b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/StaticSerialization.java index aa4e46a..09f62a8 100644 --- a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/StaticSerialization.java +++ b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/StaticSerialization.java @@ -266,6 +266,7 @@ public class StaticSerialization { } try { + // note: this does not throw UnknownHostException at this time InetAddress addr = InetAddress.getByAddress(address); return addr; } catch (UnknownHostException ex) { diff --git a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerGossipVersionDUnitTest.java b/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerGossipVersionDUnitTest.java index b283358..f321a9a 100644 --- a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerGossipVersionDUnitTest.java +++ b/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerGossipVersionDUnitTest.java @@ -149,7 +149,8 @@ public class TcpServerGossipVersionDUnitTest extends JUnit4DistributedTestCase { .getSocketCreatorForComponent(SecurableCommunicationChannel.LOCATOR), InternalDataSerializer.getDSFIDSerializer().getObjectSerializer(), InternalDataSerializer.getDSFIDSerializer().getObjectDeserializer()) - .requestToServer(LocalHostUtil.getLocalHost(), port0, req, 5000); + .requestToServer(new HostAndPort(LocalHostUtil.getLocalHost().getHostName(), port0), + req, 5000); assertThat(response).isNotNull(); } catch (IllegalStateException e) { diff --git a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java b/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java index a0947e5..ea77525 100644 --- a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java +++ b/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java @@ -133,10 +133,11 @@ public class TcpServerJUnitTest { InfoRequest testInfoRequest = new InfoRequest(); InfoResponse testInfoResponse = - (InfoResponse) tcpClient.requestToServer(localhost, port, testInfoRequest, TIMEOUT); + (InfoResponse) tcpClient.requestToServer(new HostAndPort(localhost.getHostAddress(), port), + testInfoRequest, TIMEOUT); assertThat(testInfoResponse.getInfo()[0]).contains("geode-tcp-server"); - String[] requestedInfo = tcpClient.getInfo(localhost, port); + String[] requestedInfo = tcpClient.getInfo(new HostAndPort(localhost.getHostAddress(), port)); assertNotNull(requestedInfo); assertTrue(requestedInfo.length > 1); @@ -167,7 +168,8 @@ public class TcpServerJUnitTest { public void run() { Boolean delay = Boolean.valueOf(true); try { - tcpClient.requestToServer(localhost, port, delay, TIMEOUT); + tcpClient.requestToServer(new HostAndPort(localhost.getHostAddress(), port), delay, + TIMEOUT); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { @@ -180,7 +182,8 @@ public class TcpServerJUnitTest { try { Thread.sleep(500); assertFalse(done.get()); - tcpClient.requestToServer(localhost, port, Boolean.valueOf(false), TIMEOUT); + tcpClient.requestToServer(new HostAndPort(localhost.getHostAddress(), port), + Boolean.valueOf(false), TIMEOUT); assertFalse(done.get()); latch.countDown(); @@ -206,8 +209,9 @@ public class TcpServerJUnitTest { // Due to the mocked handler, an EOFException will be thrown on the client. This is expected. assertThatThrownBy( - () -> tcpClient.requestToServer(localhost, port, new TestObject(), TIMEOUT)) - .isInstanceOf(EOFException.class); + () -> tcpClient.requestToServer(new HostAndPort(localhost.getHostAddress(), port), + new TestObject(), TIMEOUT)) + .isInstanceOf(EOFException.class); // Change the mock handler behavior to echo the request back doAnswer(new Answer() { @@ -221,7 +225,8 @@ public class TcpServerJUnitTest { TestObject test = new TestObject(); test.id = 5; TestObject result = - (TestObject) tcpClient.requestToServer(localhost, port, test, TIMEOUT); + (TestObject) tcpClient.requestToServer(new HostAndPort(localhost.getHostAddress(), port), + test, TIMEOUT); assertEquals(test.id, result.id); @@ -233,7 +238,7 @@ public class TcpServerJUnitTest { private void stopServer(final TcpClient tcpClient) throws InterruptedException { try { - tcpClient.stop(localhost, port); + tcpClient.stop(new HostAndPort(localhost.getHostAddress(), port)); } catch (ConnectException ignore) { // must not be running } diff --git a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerProductVersionDUnitTest.java b/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerProductVersionDUnitTest.java index e98cbf8..bc22674 100644 --- a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerProductVersionDUnitTest.java +++ b/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerProductVersionDUnitTest.java @@ -169,7 +169,9 @@ public class TcpServerProductVersionDUnitTest implements Serializable { } final Object response = tcpClient - .requestToServer(SocketCreator.getLocalHost(), locatorPort, requestMessage, 1000); + .requestToServer( + new HostAndPort(SocketCreator.getLocalHost().getHostAddress(), locatorPort), + requestMessage, 1000); final Class<?> responseClass = Class.forName(responseClassName); diff --git a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/LocatorAddress.java b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/HostAndPort.java similarity index 81% rename from geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/LocatorAddress.java rename to geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/HostAndPort.java index 0097b50..064e27b 100644 --- a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/LocatorAddress.java +++ b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/HostAndPort.java @@ -14,32 +14,27 @@ */ package org.apache.geode.distributed.internal.tcpserver; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.Objects; import org.apache.commons.validator.routines.InetAddressValidator; -public class LocatorAddress { +public class HostAndPort { private final InetSocketAddress socketInetAddress; - public LocatorAddress(InetSocketAddress loc, String locStr) { - if (InetAddressValidator.getInstance().isValid(locStr)) { - socketInetAddress = new InetSocketAddress(locStr, loc.getPort()); + public HostAndPort(String hostName, int port) { + if (InetAddressValidator.getInstance().isValid(hostName)) { + // numeric address - use as-is + socketInetAddress = new InetSocketAddress(hostName, port); } else { - socketInetAddress = cloneUnresolved(loc); + // non-numeric address - resolve hostname when needed + socketInetAddress = InetSocketAddress.createUnresolved(hostName, port); } } /** - * @deprecated Users should not care if literal IP or hostname is used. - */ - @Deprecated - public boolean isIpString() { - return !socketInetAddress.isUnresolved(); - } - - /** * If location is not litteral IP address a new resolved {@link InetSocketAddress} is returned. * * @return resolved {@link InetSocketAddress}, otherwise stored {@link InetSocketAddress} if @@ -74,7 +69,7 @@ public class LocatorAddress { if (o == null || getClass() != o.getClass()) { return false; } - LocatorAddress that = (LocatorAddress) o; + HostAndPort that = (HostAndPort) o; return Objects.equals(socketInetAddress, that.socketInetAddress); } @@ -88,4 +83,7 @@ public class LocatorAddress { inetSocketAddress.getPort()); } + public InetAddress getAddress() { + return getSocketInetAddress().getAddress(); + } } diff --git a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java index fcae472..52ec8c3 100644 --- a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java +++ b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java @@ -21,8 +21,6 @@ import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.net.InetAddress; -import java.net.InetSocketAddress; import java.net.Socket; import java.util.HashMap; import java.util.Map; @@ -54,7 +52,7 @@ public class TcpClient { private static final int DEFAULT_REQUEST_TIMEOUT = 60 * 2 * 1000; @MakeNotStatic - private static final Map<InetSocketAddress, Short> serverVersions = + private static final Map<HostAndPort, Short> serverVersions = new HashMap<>(); private final TcpSocketCreator socketCreator; @@ -76,17 +74,17 @@ public class TcpClient { /** * Stops the Locator running on a given host and port */ - public void stop(InetAddress addr, int port) throws java.net.ConnectException { + public void stop(HostAndPort addr) throws java.net.ConnectException { try { ShutdownRequest request = new ShutdownRequest(); - requestToServer(addr, port, request, DEFAULT_REQUEST_TIMEOUT); + requestToServer(addr, request, DEFAULT_REQUEST_TIMEOUT); } catch (java.net.ConnectException ce) { // must not be running, rethrow so the caller can handle. // In most cases this Exception should be ignored. throw ce; } catch (Exception ex) { logger.error( - "TcpClient.stop(): exception connecting to locator " + addr + ":" + port + ": " + ex); + "TcpClient.stop(): exception connecting to locator " + addr + ex); } } @@ -95,17 +93,17 @@ public class TcpClient { * <code>String</code>s are returned: the first string is the working directory of the locator * and the second string is the product directory of the locator. */ - public String[] getInfo(InetAddress addr, int port) { + public String[] getInfo(HostAndPort addr) { try { InfoRequest request = new InfoRequest(); InfoResponse response = - (InfoResponse) requestToServer(addr, port, request, DEFAULT_REQUEST_TIMEOUT); + (InfoResponse) requestToServer(addr, request, DEFAULT_REQUEST_TIMEOUT); return response.getInfo(); } catch (java.net.ConnectException ignore) { return null; } catch (Exception ex) { logger.error( - "TcpClient.getInfo(): exception connecting to locator " + addr + ":" + port + ": " + ex); + "TcpClient.getInfo(): exception connecting to locator " + addr + ": " + ex); return null; } @@ -115,53 +113,31 @@ public class TcpClient { * Send a request to a Locator and expect a reply * * @param addr The locator's address - * @param port The locator's tcp/ip port * @param request The request message * @param timeout Timeout for sending the message and receiving a reply * @return the reply */ - public Object requestToServer(InetAddress addr, int port, Object request, int timeout) + public Object requestToServer(HostAndPort addr, Object request, int timeout) throws IOException, ClassNotFoundException { - return requestToServer(addr, port, request, timeout, true); + return requestToServer(addr, request, timeout, true); } /** * Send a request to a Locator * * @param addr The locator's address - * @param port The locator's tcp/ip port - * @param request The request message - * @param timeout Timeout for sending the message and receiving a reply - * @param replyExpected Whether to wait for a reply - * @return the reply - */ - public Object requestToServer(InetAddress addr, int port, Object request, int timeout, - boolean replyExpected) throws IOException, ClassNotFoundException { - InetSocketAddress ipAddr; - if (addr == null) { - ipAddr = new InetSocketAddress(port); - } else { - ipAddr = new InetSocketAddress(addr, port); // fix for bug 30810 - } - return requestToServer(ipAddr, request, timeout, replyExpected); - } - - /** - * Send a request to a Locator - * - * @param ipAddr The locator's inet socket address * @param request The request message * @param timeout Timeout for sending the message and receiving a reply * @param replyExpected Whether to wait for a reply * @return The reply, or null if no reply is expected */ - public Object requestToServer(InetSocketAddress ipAddr, Object request, int timeout, + public Object requestToServer(HostAndPort addr, Object request, int timeout, boolean replyExpected) throws IOException, ClassNotFoundException { long giveupTime = System.currentTimeMillis() + timeout; // Get the GemFire version of the TcpServer first, before sending any other request. - short serverVersion = getServerVersion(ipAddr, timeout); + short serverVersion = getServerVersion(addr, timeout); if (serverVersion > Version.CURRENT_ORDINAL) { serverVersion = Version.CURRENT_ORDINAL; @@ -179,10 +155,10 @@ public class TcpClient { return null; } - logger.debug("TcpClient sending {} to {}", request, ipAddr); + logger.debug("TcpClient sending {} to {}", request, addr); Socket sock = - socketCreator.connect(ipAddr.getAddress(), ipAddr.getPort(), (int) newTimeout, null, false); + socketCreator.connect(addr, (int) newTimeout, null, false); sock.setSoTimeout((int) newTimeout); DataOutputStream out = null; try { @@ -210,7 +186,7 @@ public class TcpClient { return response; } catch (EOFException ex) { logger.debug("requestToServer EOFException ", ex); - EOFException eof = new EOFException("Locator at " + ipAddr + EOFException eof = new EOFException("Locator at " + addr + " did not respond. This is normal if the locator was shutdown. If it wasn't check its log for exceptions."); eof.initCause(ex); throw eof; @@ -246,7 +222,7 @@ public class TcpClient { } } - private Short getServerVersion(InetSocketAddress ipAddr, int timeout) + private Short getServerVersion(HostAndPort addr, int timeout) throws IOException, ClassNotFoundException { int gossipVersion; @@ -255,7 +231,7 @@ public class TcpClient { // Get GemFire version of TcpServer first, before sending any other request. synchronized (serverVersions) { - serverVersion = serverVersions.get(ipAddr); + serverVersion = serverVersions.get(addr); } if (serverVersion != null) { @@ -265,7 +241,7 @@ public class TcpClient { gossipVersion = TcpServer.getOldGossipVersion(); try { - sock = socketCreator.connect(ipAddr.getAddress(), ipAddr.getPort(), timeout, null, false); + sock = socketCreator.connect(addr, timeout, null, false); sock.setSoTimeout(timeout); } catch (SSLException e) { throw new IllegalStateException("Unable to form SSL connection", e); @@ -296,7 +272,7 @@ public class TcpClient { VersionResponse response = (VersionResponse) readObject; serverVersion = response.getVersionOrdinal(); synchronized (serverVersions) { - serverVersions.put(ipAddr, serverVersion); + serverVersions.put(addr, serverVersion); } return serverVersion; @@ -318,7 +294,7 @@ public class TcpClient { } synchronized (serverVersions) { - serverVersions.put(ipAddr, Version.GFE_57.ordinal()); + serverVersions.put(addr, Version.GFE_57.ordinal()); } return Short.valueOf(Version.GFE_57.ordinal()); } diff --git a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpSocketCreator.java b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpSocketCreator.java index 11b7876..1dbd44c 100644 --- a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpSocketCreator.java +++ b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpSocketCreator.java @@ -36,10 +36,10 @@ public interface TcpSocketCreator { boolean isBindAddress, boolean useNIO, int tcpBufferSize, int[] tcpPortRange, boolean sslConnection) throws IOException; - Socket connect(InetAddress inetadd, int port, int timeout, + Socket connect(HostAndPort addr, int timeout, ConnectionWatcher optionalWatcher, boolean clientSide) throws IOException; - Socket connect(InetAddress inetadd, int port, int timeout, + Socket connect(HostAndPort addr, int timeout, ConnectionWatcher optionalWatcher, boolean clientSide, int socketBufferSize, boolean sslConnection) throws IOException; diff --git a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpSocketCreatorImpl.java b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpSocketCreatorImpl.java index 8dc4d9e..437526c 100644 --- a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpSocketCreatorImpl.java +++ b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpSocketCreatorImpl.java @@ -159,14 +159,14 @@ public class TcpSocketCreatorImpl implements TcpSocketCreator { @Override - public final Socket connect(InetAddress inetadd, int port, int timeout, + public final Socket connect(HostAndPort addr, int timeout, ConnectionWatcher optionalWatcher, boolean clientSide) throws IOException { - return connect(inetadd, port, timeout, optionalWatcher, clientSide, -1, useSSL()); + return connect(addr, timeout, optionalWatcher, clientSide, -1, useSSL()); } @Override - public Socket connect(InetAddress inetadd, int port, int timeout, + public Socket connect(HostAndPort addr, int timeout, ConnectionWatcher optionalWatcher, boolean clientSide, int socketBufferSize, boolean sslConnection) throws IOException { if (sslConnection) { @@ -174,7 +174,7 @@ public class TcpSocketCreatorImpl implements TcpSocketCreator { } Socket socket = null; if (clientSide) { - socket = createCustomClientSocket(inetadd, port); + socket = createCustomClientSocket(addr); } if (socket == null) { socket = new Socket(); @@ -188,8 +188,11 @@ public class TcpSocketCreatorImpl implements TcpSocketCreator { if (optionalWatcher != null) { optionalWatcher.beforeConnect(socket); } + InetSocketAddress inetSocketAddress = addr.getSocketInetAddress(); try { - socket.connect(new InetSocketAddress(inetadd, port), Math.max(timeout, 0)); + socket.connect( + new InetSocketAddress(inetSocketAddress.getAddress(), inetSocketAddress.getPort()), + Math.max(timeout, 0)); } finally { if (optionalWatcher != null) { optionalWatcher.afterConnect(socket); @@ -205,7 +208,7 @@ public class TcpSocketCreatorImpl implements TcpSocketCreator { * * @return the socket, or null if no custom client socket factory is available */ - protected Socket createCustomClientSocket(InetAddress inetaddr, int port) throws IOException { + protected Socket createCustomClientSocket(HostAndPort addr) throws IOException { throw new UnsupportedOperationException( "custom client socket factory is not supported by this socket creator"); } diff --git a/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/LocatorAddressTest.java b/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/HostAndPortTest.java similarity index 56% rename from geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/LocatorAddressTest.java rename to geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/HostAndPortTest.java index ad2ed0e..1381721 100644 --- a/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/LocatorAddressTest.java +++ b/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/HostAndPortTest.java @@ -20,15 +20,14 @@ import java.net.InetSocketAddress; import org.junit.Test; -public class LocatorAddressTest { +public class HostAndPortTest { /** * Test that getSocketInentAddress returns resolved InetSocketAddress */ @Test public void Test_getSocketInentAddress_returns_resolved_SocketAddress() { - InetSocketAddress host1address = new InetSocketAddress(8080); - LocatorAddress locator1 = new LocatorAddress(host1address, "localhost"); + HostAndPort locator1 = new HostAndPort("localhost", 8080); InetSocketAddress actual = locator1.getSocketInetAddress(); @@ -40,8 +39,7 @@ public class LocatorAddressTest { */ @Test public void Test_getSocketInentAddress_returns_unresolved_SocketAddress() { - InetSocketAddress host1address = InetSocketAddress.createUnresolved("fakelocalhost", 8090); - LocatorAddress locator1 = new LocatorAddress(host1address, "fakelocalhost"); + HostAndPort locator1 = new HostAndPort("fakelocalhost", 8090); InetSocketAddress actual = locator1.getSocketInetAddress(); @@ -49,61 +47,43 @@ public class LocatorAddressTest { } /** - * Test whether LocatorAddress are equal, when created from resolved and unresolved + * Test whether HostAndPort are equal, when created from resolved and unresolved * InetSocketAddress */ @Test public void Test_equals_LocatorAddress_from_resolved_and_unresolved_SocketAddress() { - InetSocketAddress host1address = InetSocketAddress.createUnresolved("localhost", 8090); - LocatorAddress locator1 = new LocatorAddress(host1address, "localhost"); + HostAndPort locator1 = new HostAndPort("localhost", 8080); InetSocketAddress host2address = locator1.getSocketInetAddress(); - LocatorAddress locator2 = new LocatorAddress(host2address, "localhost"); + HostAndPort locator2 = new HostAndPort("localhost", host2address.getPort()); - assertThat(host1address.isUnresolved()).isTrue(); assertThat(host2address.isUnresolved()).isFalse(); assertThat(locator1.equals(locator2)).isTrue(); } @Test public void Test_getPort_returns_port() { - InetSocketAddress host1address = InetSocketAddress.createUnresolved("localhost", 8090); - LocatorAddress locator1 = new LocatorAddress(host1address, "localhost"); + HostAndPort locator1 = new HostAndPort("localhost", 8090); assertThat(locator1.getPort()).isEqualTo(8090); } @Test public void Test_getHostName_returns_hostname() { - InetSocketAddress host1address = InetSocketAddress.createUnresolved("fakelocalhost", 8091); - LocatorAddress locator1 = new LocatorAddress(host1address, "fakelocalhost"); + HostAndPort locator1 = new HostAndPort("fakelocalhost", 8091); assertThat(locator1.getHostName()).isEqualTo("fakelocalhost"); } @Test public void Test_hashCode_of_SocketAddress() { InetSocketAddress host1address = InetSocketAddress.createUnresolved("fakelocalhost", 8091); - LocatorAddress locator1 = new LocatorAddress(host1address, "fakelocalhost"); + HostAndPort locator1 = new HostAndPort("fakelocalhost", 8091); assertThat(locator1.hashCode()).isEqualTo(host1address.hashCode()); } @Test public void Test_toString_LocatorAddress() { - InetSocketAddress host1address = InetSocketAddress.createUnresolved("fakelocalhost", 8091); - LocatorAddress locator1 = new LocatorAddress(host1address, "fakelocalhost"); + HostAndPort locator1 = new HostAndPort("fakelocalhost", 8091); assertThat(locator1.toString()).contains("socketInetAddress"); } - @Test - public void Test_isIpString_for_LocatorAddress_constructed_from_IPstring() { - InetSocketAddress host1address = new InetSocketAddress(8080); - LocatorAddress locator1 = new LocatorAddress(host1address, "127.0.0.1"); - assertThat(locator1.isIpString()).isTrue(); - } - - @Test - public void Test_isIpString_for_LocatorAddress_constructed_from_hostname() { - InetSocketAddress host1address = new InetSocketAddress(8080); - LocatorAddress locator1 = new LocatorAddress(host1address, "localhost"); - assertThat(locator1.isIpString()).isFalse(); - } } diff --git a/geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorDiscovery.java b/geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorDiscovery.java index ce1c7e2..62b2fab 100644 --- a/geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorDiscovery.java +++ b/geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorDiscovery.java @@ -21,6 +21,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.logging.log4j.Logger; import org.apache.geode.distributed.internal.WanLocatorDiscoverer; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.InternalDataSerializer; import org.apache.geode.internal.admin.remote.DistributionLocatorId; @@ -138,8 +139,8 @@ public class LocatorDiscovery { while (!getDiscoverer().isStopped()) { try { RemoteLocatorJoinResponse response = - (RemoteLocatorJoinResponse) locatorClient.requestToServer(locatorId.getHost(), request, - WanLocatorDiscoverer.WAN_LOCATOR_CONNECTION_TIMEOUT, true); + (RemoteLocatorJoinResponse) locatorClient.requestToServer(locatorId.getHost(), + request, WanLocatorDiscoverer.WAN_LOCATOR_CONNECTION_TIMEOUT, true); if (response != null) { LocatorHelper.addExchangedLocators(response.getLocators(), this.locatorListener); logger.info("Locator discovery task exchanged locator information {} with {}: {}.", @@ -185,7 +186,8 @@ public class LocatorDiscovery { RemoteLocatorJoinResponse response; try { response = - (RemoteLocatorJoinResponse) locatorClient.requestToServer(remoteLocator.getHost(), + (RemoteLocatorJoinResponse) locatorClient.requestToServer( + remoteLocator.getHost(), request, WanLocatorDiscoverer.WAN_LOCATOR_CONNECTION_TIMEOUT, true); if (response != null) { LocatorHelper.addExchangedLocators(response.getLocators(), this.locatorListener); @@ -195,7 +197,8 @@ public class LocatorDiscovery { while (true) { Thread.sleep(WAN_LOCATOR_PING_INTERVAL); RemoteLocatorPingResponse pingResponse = - (RemoteLocatorPingResponse) locatorClient.requestToServer(remoteLocator.getHost(), + (RemoteLocatorPingResponse) locatorClient.requestToServer( + new HostAndPort(remoteLocator.getHostName(), remoteLocator.getPort()), pingRequest, WanLocatorDiscoverer.WAN_LOCATOR_CONNECTION_TIMEOUT, true); if (pingResponse != null) { continue; diff --git a/geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorMembershipListenerImpl.java b/geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorMembershipListenerImpl.java index 31315ed..112feb6 100644 --- a/geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorMembershipListenerImpl.java +++ b/geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorMembershipListenerImpl.java @@ -244,7 +244,8 @@ public class LocatorMembershipListenerImpl implements LocatorMembershipListener DistributionLocatorId advertisedLocator = locatorJoinMessage.getLocator(); try { - tcpClient.requestToServer(targetLocator.getHost(), locatorJoinMessage, memberTimeout, + tcpClient.requestToServer(targetLocator.getHost(), + locatorJoinMessage, memberTimeout, false); } catch (Exception exception) { if (logger.isDebugEnabled()) { @@ -266,7 +267,8 @@ public class LocatorMembershipListenerImpl implements LocatorMembershipListener DistributionLocatorId advertisedLocator = locatorJoinMessage.getLocator(); try { - tcpClient.requestToServer(targetLocator.getHost(), locatorJoinMessage, memberTimeout, + tcpClient.requestToServer(targetLocator.getHost(), + locatorJoinMessage, memberTimeout, false); return true; diff --git a/geode-wan/src/test/java/org/apache/geode/cache/client/internal/locator/wan/LocatorMembershipListenerTest.java b/geode-wan/src/test/java/org/apache/geode/cache/client/internal/locator/wan/LocatorMembershipListenerTest.java index f3770a6..d282128 100644 --- a/geode-wan/src/test/java/org/apache/geode/cache/client/internal/locator/wan/LocatorMembershipListenerTest.java +++ b/geode-wan/src/test/java/org/apache/geode/cache/client/internal/locator/wan/LocatorMembershipListenerTest.java @@ -30,7 +30,6 @@ import static org.mockito.Mockito.when; import java.io.EOFException; import java.io.IOException; -import java.net.InetSocketAddress; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -50,6 +49,7 @@ import org.junit.Before; import org.junit.Test; import org.apache.geode.distributed.internal.DistributionConfig; +import org.apache.geode.distributed.internal.tcpserver.HostAndPort; import org.apache.geode.distributed.internal.tcpserver.TcpClient; import org.apache.geode.internal.admin.remote.DistributionLocatorId; import org.apache.geode.test.junit.ResultCaptor; @@ -211,7 +211,7 @@ public class LocatorMembershipListenerTest { any(DistributionLocatorId.class), anyMap(), any(DistributionLocatorId.class), anyInt()); locatorMembershipListener.locatorJoined(2, joiningLocator, locator1Site1); joinLocatorsDistributorThread(resultCaptor); - verify(tcpClient, times(0)).requestToServer(any(InetSocketAddress.class), + verify(tcpClient, times(0)).requestToServer(any(HostAndPort.class), any(LocatorJoinMessage.class), anyInt(), anyBoolean()); } diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewaySenderEventRemoteDispatcherIntegrationTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewaySenderEventRemoteDispatcherIntegrationTest.java index f564b08..1b17e6d 100644 --- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewaySenderEventRemoteDispatcherIntegrationTest.java +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewaySenderEventRemoteDispatcherIntegrationTest.java @@ -22,8 +22,6 @@ import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import java.net.InetAddress; -import java.net.UnknownHostException; import java.util.LinkedList; import java.util.Properties; @@ -83,14 +81,6 @@ public class GatewaySenderEventRemoteDispatcherIntegrationTest { new GatewaySenderEventRemoteDispatcher(eventProcessor, connection); /* - * Set a HostnameResolver which simulates a failed - * hostname lookup resulting in an UnknownHostException - */ - InternalDistributedMember.setHostnameResolver(ignored -> { - throw new UnknownHostException("a.b.c"); - }); - - /* * We have mocked our connection to throw a RuntimeException when readAcknowledgement() is * called, then in the exception handling for that RuntimeException, the UnknownHostException * will be thrown when trying to notify listeners of the crash. @@ -98,13 +88,6 @@ public class GatewaySenderEventRemoteDispatcherIntegrationTest { dispatcher.readAcknowledgement(); /* - * Need to reset the hostname resolver to a real InetAddress resolver as it is static state and - * we do not want it to throw an UnknownHostException in subsequent test runs. - */ - InternalDistributedMember - .setHostnameResolver((location) -> InetAddress.getByName(location.getHostName())); - - /* * The handling of the UnknownHostException should not result in the event processor being * stopped, so assert that setIsStopped(true) was never called. */
