Skip to content

Commit fce6b7b

Browse files
authored
fix: fix eager name resolution (#328)
1 parent 575cf96 commit fce6b7b

File tree

9 files changed

+55
-23
lines changed

9 files changed

+55
-23
lines changed

src/main/java/io/kurrent/dbclient/ClientTelemetryTags.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ Builder withServerTagsFromGrpcChannel(ManagedChannel channel) {
3636
Builder withServerTagsFromClientSettings(KurrentDBClientSettings settings) {
3737
if (settings == null || !settings.isDnsDiscover()) return this;
3838

39-
InetSocketAddress dns = settings.getHosts()[0];
39+
Endpoint dns = settings.getHosts()[0];
4040

41-
return withServerTags(dns.getAddress().toString(), String.valueOf(dns.getPort()));
41+
return withServerTags(dns.getHost(), String.valueOf(dns.getPort()));
4242
}
4343

4444
private Builder withServerTags(String address, String port) {

src/main/java/io/kurrent/dbclient/ConnectionSettingsBuilder.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class ConnectionSettingsBuilder {
2929
private boolean _tlsVerifyCert = true;
3030
private UserCredentials _defaultCredentials;
3131
private ClientCertificate _defaultClientCertificate;
32-
private LinkedList<InetSocketAddress> _hosts = new LinkedList<>();
32+
private LinkedList<Endpoint> _hosts = new LinkedList<>();
3333
private long _keepAliveTimeout = Consts.DEFAULT_KEEP_ALIVE_TIMEOUT_IN_MS;
3434
private long _keepAliveInterval = Consts.DEFAULT_KEEP_ALIVE_INTERVAL_IN_MS;
3535
private Long _defaultDeadline = null;
@@ -54,7 +54,7 @@ public KurrentDBClientSettings buildConnectionSettings() {
5454
_tlsVerifyCert,
5555
_defaultCredentials,
5656
_defaultClientCertificate,
57-
_hosts.toArray(new InetSocketAddress[0]),
57+
_hosts.toArray(new Endpoint[0]),
5858
_keepAliveTimeout,
5959
_keepAliveInterval,
6060
_defaultDeadline,
@@ -155,14 +155,15 @@ public ConnectionSettingsBuilder defaultClientCertificate(ClientCertificate defa
155155
* Adds an endpoint the client will use to connect.
156156
*/
157157
public ConnectionSettingsBuilder addHost(String host, int port) {
158-
return addHost(new InetSocketAddress(host, port));
158+
this._hosts.add(new Endpoint(host, port));
159+
return this;
159160
}
160161

161162
/**
162163
* Adds an endpoint the client will use to connect.
163164
*/
164165
public ConnectionSettingsBuilder addHost(InetSocketAddress host) {
165-
this._hosts.push(host);
166+
this._hosts.push(new Endpoint(host.getHostName(), host.getPort()));
166167
return this;
167168
}
168169

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.kurrent.dbclient;
2+
3+
public class Endpoint {
4+
private final String host;
5+
private final int port;
6+
7+
public Endpoint(String host, int port) {
8+
this.host = host;
9+
this.port = port;
10+
}
11+
12+
public String getHost() {
13+
return host;
14+
}
15+
16+
public int getPort() {
17+
return port;
18+
}
19+
}

src/main/java/io/kurrent/dbclient/KurrentDBClientSettings.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class KurrentDBClientSettings {
3434
private final boolean tlsVerifyCert;
3535
private final UserCredentials defaultCredentials;
3636
private final ClientCertificate defaultClientCertificate;
37-
private final InetSocketAddress[] hosts;
37+
private final Endpoint[] hosts;
3838
private final long keepAliveTimeout;
3939
private final long keepAliveInterval;
4040
private final Long defaultDeadline;
@@ -117,7 +117,7 @@ public ClientCertificate getDefaultClientCertificate() {
117117
* The list of endpoints that the client uses to connect.
118118
* @return hosts to connect to.
119119
*/
120-
public InetSocketAddress[] getHosts() {
120+
public Endpoint[] getHosts() {
121121
return hosts;
122122
}
123123

@@ -177,7 +177,7 @@ public String getTlsCaFile() {
177177
boolean tlsVerifyCert,
178178
UserCredentials defaultCredentials,
179179
ClientCertificate defaultClientCertificate,
180-
InetSocketAddress[] hosts,
180+
Endpoint[] hosts,
181181
long keepAliveTimeout,
182182
long keepAliveInterval,
183183
Long defaultDeadline,

src/main/java/io/kurrent/dbclient/SingleNodeDiscovery.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
import java.util.concurrent.CompletableFuture;
55

66
class SingleNodeDiscovery implements Discovery {
7-
private final InetSocketAddress endpoint;
7+
private final Endpoint endpoint;
88

9-
SingleNodeDiscovery(InetSocketAddress endpoint) {
9+
SingleNodeDiscovery(Endpoint endpoint) {
1010
this.endpoint = endpoint;
1111
}
1212

1313
@Override
1414
public CompletableFuture<Void> run(ConnectionState state) {
15-
return CompletableFuture.runAsync(() -> state.connect(endpoint));
15+
return CompletableFuture.runAsync(() -> state.connect(new InetSocketAddress(this.endpoint.getHost(), this.endpoint.getPort())));
1616
}
1717
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package io.kurrent.dbclient.resolution;
22

3+
import io.kurrent.dbclient.Endpoint;
4+
35
import java.net.InetSocketAddress;
46
import java.util.Collections;
57
import java.util.List;
68

79
public class DeferredNodeResolution implements NodeResolution {
8-
private final InetSocketAddress address;
10+
private final Endpoint address;
911

10-
public DeferredNodeResolution(InetSocketAddress address) {
12+
public DeferredNodeResolution(Endpoint address) {
1113
this.address = address;
1214
}
1315

1416
@Override
1517
public List<InetSocketAddress> resolve() {
16-
return Collections.singletonList(address);
18+
return Collections.singletonList(new InetSocketAddress(address.getHost(), address.getPort()));
1719
}
1820
}

src/main/java/io/kurrent/dbclient/resolution/DeprecatedNodeResolution.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.kurrent.dbclient.resolution;
22

3+
import io.kurrent.dbclient.Endpoint;
4+
35
import java.net.InetAddress;
46
import java.net.InetSocketAddress;
57
import java.net.UnknownHostException;
@@ -8,16 +10,16 @@
810
import java.util.stream.Collectors;
911

1012
public class DeprecatedNodeResolution implements NodeResolution {
11-
private final InetSocketAddress address;
13+
private final Endpoint address;
1214

13-
public DeprecatedNodeResolution(InetSocketAddress address) {
15+
public DeprecatedNodeResolution(Endpoint address) {
1416
this.address = address;
1517
}
1618

1719
@Override
1820
public List<InetSocketAddress> resolve() {
1921
try {
20-
return Arrays.stream(InetAddress.getAllByName(address.getHostName()))
22+
return Arrays.stream(InetAddress.getAllByName(address.getHost()))
2123
.map(addr -> new InetSocketAddress(addr, address.getPort()))
2224
.collect(Collectors.toList());
2325
} catch (UnknownHostException e) {
Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
package io.kurrent.dbclient.resolution;
22

3+
import io.kurrent.dbclient.Endpoint;
4+
35
import java.net.InetSocketAddress;
6+
import java.util.ArrayList;
47
import java.util.Arrays;
58
import java.util.List;
69

710
public class FixedSeedsNodeResolution implements NodeResolution {
8-
private final InetSocketAddress[] seeds;
11+
private final Endpoint[] seeds;
912

10-
public FixedSeedsNodeResolution(InetSocketAddress[] seeds) {
13+
public FixedSeedsNodeResolution(Endpoint[] seeds) {
1114
this.seeds = seeds;
1215
}
1316

1417
@Override
1518
public List<InetSocketAddress> resolve() {
16-
return Arrays.asList(seeds);
19+
List<InetSocketAddress> addresses = new ArrayList<>(seeds.length);
20+
21+
for (Endpoint seed : seeds)
22+
addresses.add(new InetSocketAddress(seed.getHost(), seed.getPort()));
23+
24+
return addresses;
1725
}
1826
}

src/test/java/io/kurrent/dbclient/misc/ParseValidConnectionStringTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public void assertEquals(KurrentDBClientSettings settings, KurrentDBClientSettin
145145

146146
Assertions.assertEquals(settings.getHosts().length, other.getHosts().length);
147147
IntStream.range(0, settings.getHosts().length).forEach((i) -> {
148-
Assertions.assertEquals(settings.getHosts()[i].getHostName(), other.getHosts()[i].getHostName());
148+
Assertions.assertEquals(settings.getHosts()[i].getHost(), other.getHosts()[i].getHost());
149149
Assertions.assertEquals(settings.getHosts()[i].getPort(), other.getHosts()[i].getPort());
150150
});
151151
}
@@ -227,7 +227,7 @@ private KurrentDBClientSettings parseJson(String input) throws JsonProcessingExc
227227
}
228228

229229
tree.get("hosts").elements().forEachRemaining((host) -> {
230-
builder.addHost(new InetSocketAddress(host.get("address").asText(), host.get("port").asInt()));
230+
builder.addHost(host.get("address").asText(), host.get("port").asInt());
231231
});
232232

233233
if (tree.get("features") != null) {

0 commit comments

Comments
 (0)