This is an automated email from the ASF dual-hosted git repository. rdale pushed a commit to branch revert_tinkerpop-2289 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit eaf39f434339122cd1974d8ef6a6f151568aa4d0 Author: Robert Dale <robd...@gmail.com> AuthorDate: Tue Nov 5 22:39:40 2019 -0500 Reverts TINKERPOP-2289 resolve ip address --- gremlin-driver/pom.xml | 18 --------- .../apache/tinkerpop/gremlin/driver/Cluster.java | 24 ++++------- .../org/apache/tinkerpop/gremlin/driver/Host.java | 3 +- .../apache/tinkerpop/gremlin/driver/HostTest.java | 46 +--------------------- 4 files changed, 10 insertions(+), 81 deletions(-) diff --git a/gremlin-driver/pom.xml b/gremlin-driver/pom.xml index 870bf6b..1bb7566 100644 --- a/gremlin-driver/pom.xml +++ b/gremlin-driver/pom.xml @@ -104,24 +104,6 @@ limitations under the License. <artifactId>hamcrest-all</artifactId> <scope>test</scope> </dependency> - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-api-mockito</artifactId> - <version>1.6.2</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-module-junit4</artifactId> - <version>1.6.2</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-module-junit4-rule</artifactId> - <version>1.6.2</version> - <scope>test</scope> - </dependency> </dependencies> <build> diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java index b424c5a..113f081 100644 --- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java +++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java @@ -54,7 +54,6 @@ import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -965,21 +964,13 @@ public final class Cluster { } /** - * Adds an address representing a group of Gremlin Servers, which will be added to the list of servers a - * {@link Client} will try to contact to send requests to. The address should be parseable by - * {@code InetAddress#getAllByName(String)}. That's the only validation performed at this point. - * No connection to the hosts is attempted. - * <p/> - * Note that if the address argument is a hostname that resolves to multiple {@code INetAddress} objects that - * happen to point to the same physical Gremlin Server instance the driver will think that it has more hosts - * for it to send requests to than there are in reality. A common situation in which this issue may occur is - * when IPv6 addressing is present as {@code InetAddress#getAllByName(String)} will return both the IPv6 and - * the IPv4 addresses. In these cases, the issue can be resolved by simply using the IP address directly or - * setting the Java system property {@code -Djava.net.preferIPv4Stack=true}. + * Adds the address of a Gremlin Server to the list of servers a {@link Client} will try to contact to send + * requests to. The address should be parseable by {@link InetAddress#getByName(String)}. That's the only + * validation performed at this point. No connection to the host is attempted. */ public Builder addContactPoint(final String address) { try { - this.addresses.addAll(Arrays.asList(InetAddress.getAllByName(address))); + this.addresses.add(InetAddress.getByName(address)); return this; } catch (UnknownHostException e) { throw new IllegalArgumentException(e.getMessage()); @@ -987,10 +978,9 @@ public final class Cluster { } /** - * Add one or more addresses representing groups of Gremlin Servers, which will be added to the list of - * servers a {@link Client} will try to contact to send requests to. The address should be parseable by - * {@link InetAddress#getByName(String)}. That's the only validation performed at this point. - * No connection to the host is attempted. + * Add one or more the addresses of a Gremlin Servers to the list of servers a {@link Client} will try to + * contact to send requests to. The address should be parseable by {@link InetAddress#getByName(String)}. + * That's the only validation performed at this point. No connection to the host is attempted. */ public Builder addContactPoints(final String... addresses) { for (String address : addresses) diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Host.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Host.java index 5fd2b40..e225365 100644 --- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Host.java +++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Host.java @@ -46,7 +46,6 @@ public final class Host { ScheduledFuture<?> retryThread = null; Host(final InetSocketAddress address, final Cluster cluster) { - assert(!address.isUnresolved()); this.cluster = cluster; this.address = address; this.hostUri = makeUriFromAddress(address, cluster.getPath(), cluster.connectionPoolSettings().enableSsl); @@ -98,7 +97,7 @@ public final class Host { private static URI makeUriFromAddress(final InetSocketAddress addy, final String path, final boolean ssl) { try { final String scheme = ssl ? "wss" : "ws"; - return new URI(scheme, null, addy.getAddress().getHostAddress(), addy.getPort(), path, null, null); + return new URI(scheme, null, addy.getHostName(), addy.getPort(), path, null, null); } catch (URISyntaxException use) { throw new RuntimeException(String.format("URI for host could not be constructed from: %s", addy), use); } diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/HostTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/HostTest.java index 321e843..2c20261 100644 --- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/HostTest.java +++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/HostTest.java @@ -19,26 +19,15 @@ package org.apache.tinkerpop.gremlin.driver; import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.URI; -import java.net.UnknownHostException; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; /** * @author Stephen Mallette (http://stephen.genoprime.com) */ -@RunWith(PowerMockRunner.class) public class HostTest { @Test @@ -46,7 +35,7 @@ public class HostTest { final InetSocketAddress addy = new InetSocketAddress("localhost", 8182); final Host host = new Host(addy, Cluster.open()); final URI webSocketUri = host.getHostUri(); - assertEquals("ws://" + addy.getAddress().getHostAddress() + ":8182/gremlin", webSocketUri.toString()); + assertEquals("ws://localhost:8182/gremlin", webSocketUri.toString()); } @Test @@ -54,38 +43,7 @@ public class HostTest { final InetSocketAddress addy = new InetSocketAddress("localhost", 8183); final Host host = new Host(addy, Cluster.build().port(8183).path("/argh").create()); final URI webSocketUri = host.getHostUri(); - assertEquals("ws://" + addy.getAddress().getHostAddress() + ":8183/argh", webSocketUri.toString()); + assertEquals("ws://localhost:8183/argh", webSocketUri.toString()); } - @Test - @PrepareForTest(Cluster.Builder.class) - public void shouldFindAllHostsWithDeterministicAddress() throws Exception { - final String hostname = "test.tinkerpop.apache.org"; - final Set<String> addresses = new HashSet<>(Arrays.asList("10.10.0.1", "10.10.0.2", "10.10.0.3")); - final InetAddress[] hosts = addresses.stream().map(addr -> inetAddress(hostname, addr)).toArray(InetAddress[]::new); - - PowerMockito.mockStatic(InetAddress.class); - PowerMockito.when(InetAddress.getAllByName(hostname)).thenReturn(hosts); - - final Cluster cluster = Cluster.build().addContactPoint(hostname).create(); - - cluster.init(); - - assertEquals(addresses.size(), cluster.allHosts().size()); - - cluster.allHosts().forEach(host -> { - final String uriHost = host.getHostUri().getHost(); - final String address = host.getAddress().getAddress().getHostAddress(); - assertEquals(address, uriHost); - assertTrue(addresses.contains(address)); - }); - } - - private InetAddress inetAddress(final String hostname, final String address) { - try { - return InetAddress.getByAddress(hostname, InetAddress.getByName(address).getAddress()); - } catch (UnknownHostException ex) { - throw new RuntimeException(ex); - } - } }