This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/skywalking-banyandb-java-client.git
The following commit(s) were added to refs/heads/main by this push:
new 2cdda2c Remove analyze DNS name to get/refresh IP for create
connection. (#69)
2cdda2c is described below
commit 2cdda2c6c669492167838fcfc6ca52a53815ef55
Author: Wan Kai <[email protected]>
AuthorDate: Thu Sep 19 10:55:48 2024 +0800
Remove analyze DNS name to get/refresh IP for create connection. (#69)
---
CHANGES.md | 7 +++++
README.md | 6 +---
.../skywalking/banyandb/v1/client/Options.java | 11 +++----
.../client/grpc/channel/DefaultChannelFactory.java | 34 ++--------------------
4 files changed, 14 insertions(+), 44 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index be2d6ce..690c255 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -2,6 +2,13 @@ Changes by Version
==================
Release Notes.
+0.7.0-rc4
+------------------
+
+### Features
+
+* Remove analyze DNS name to get/refresh IP for create connection.
+
0.7.0-rc3
------------------
diff --git a/README.md b/README.md
index e82c569..3df5d88 100644
--- a/README.md
+++ b/README.md
@@ -23,9 +23,7 @@ BanyanDBClient client = new
BanyanDBClient("banyandb.svc:17912", "10.0.12.9:1791
client.connect();
```
-These addresses are either IP addresses or DNS names. If DNS names are used,
the client will resolve the DNS name to
-IP addresses and use them to connect to the server. The client will
periodically refresh the IP addresses of the DNS
-name. The refresh interval can be configured by `resolveDNSInterval` option.
+These addresses are either IP addresses or DNS names.
The client will try to connect to the server in a round-robin manner. The
client will periodically refresh the server
addresses. The refresh interval can be configured by `refreshInterval` option.
@@ -43,8 +41,6 @@ options are listed below,
| forceReconnectionThreshold | Threshold of force gRPC reconnection if network
issue is encountered | 1 |
| forceTLS | Force use TLS for gRPC
| false |
| sslTrustCAPath | SSL: Trusted CA Path
| |
-| sslCertChainPath | SSL: Cert Chain Path
| |
-| sslKeyPath | SSL: Cert Key Path
| |
## Schema Management
diff --git
a/src/main/java/org/apache/skywalking/banyandb/v1/client/Options.java
b/src/main/java/org/apache/skywalking/banyandb/v1/client/Options.java
index b081f9e..e22959c 100644
--- a/src/main/java/org/apache/skywalking/banyandb/v1/client/Options.java
+++ b/src/main/java/org/apache/skywalking/banyandb/v1/client/Options.java
@@ -45,10 +45,7 @@ public class Options {
* Threshold of force gRPC reconnection if network issue is encountered
*/
private long forceReconnectionThreshold = 1;
- /**
- * Threshold of resolving the DNS
- */
- private long resolveDNSInterval = 30 * 60;
+
/**
* Force use TLS for gRPC
* Default is false
@@ -59,11 +56,11 @@ public class Options {
*/
private String sslTrustCAPath = "";
/**
- * SSL: Cert Chain Path
+ * SSL: Cert Chain Path, BanyanDB server not support mTLS yet
*/
private String sslCertChainPath = "";
/**
- * SSL: Cert Key Path
+ * SSL: Cert Key Path, BanyanDB server not support mTLS yet
*/
private String sslKeyPath = "";
@@ -76,4 +73,4 @@ public class Options {
.setForceReconnectionThreshold(this.forceReconnectionThreshold)
.build();
}
-}
\ No newline at end of file
+}
diff --git
a/src/main/java/org/apache/skywalking/banyandb/v1/client/grpc/channel/DefaultChannelFactory.java
b/src/main/java/org/apache/skywalking/banyandb/v1/client/grpc/channel/DefaultChannelFactory.java
index d246dda..6a38fb0 100644
---
a/src/main/java/org/apache/skywalking/banyandb/v1/client/grpc/channel/DefaultChannelFactory.java
+++
b/src/main/java/org/apache/skywalking/banyandb/v1/client/grpc/channel/DefaultChannelFactory.java
@@ -25,39 +25,27 @@ import io.grpc.netty.NegotiationType;
import io.grpc.netty.NettyChannelBuilder;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.util.internal.PlatformDependent;
-import io.netty.util.internal.SocketUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.banyandb.v1.client.Options;
import org.apache.skywalking.banyandb.v1.client.util.PrivateKeyUtil;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.URI;
import java.net.UnknownHostException;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.stream.Stream;
@Slf4j
@RequiredArgsConstructor
public class DefaultChannelFactory implements ChannelFactory {
private final URI[] targets;
private final Options options;
- private SocketAddress[] addresses;
- private long lastTargetsResolvedTime;
@Override
public ManagedChannel create() throws IOException {
- if (this.addresses == null ||
- System.currentTimeMillis() - this.lastTargetsResolvedTime >
this.options.getResolveDNSInterval()) {
- resolveTargets();
- }
NettyChannelBuilder managedChannelBuilder =
NettyChannelBuilder.forAddress(resolveAddress())
.maxInboundMessageSize(options.getMaxInboundMessageSize())
.usePlaintext();
@@ -91,30 +79,12 @@ public class DefaultChannelFactory implements
ChannelFactory {
return managedChannelBuilder.build();
}
- private void resolveTargets() {
- this.addresses = Arrays.stream(this.targets)
- .flatMap(target -> {
- try {
- return
Arrays.stream(SocketUtils.allAddressesByName(target.getHost()))
- .map(InetAddress::getHostAddress)
- .map(ip -> new InetSocketAddress(ip,
target.getPort()));
- } catch (Throwable t) {
- log.error("Failed to resolve the BanyanDB server's
address ", t);
- }
- return Stream.empty();
- })
- .sorted(Comparator.comparing(InetSocketAddress::toString))
- .distinct()
- .toArray(InetSocketAddress[]::new);
- this.lastTargetsResolvedTime = System.currentTimeMillis();
- }
-
private SocketAddress resolveAddress() throws UnknownHostException {
- int numAddresses = this.addresses.length;
+ int numAddresses = this.targets.length;
if (numAddresses < 1) {
throw new UnknownHostException();
}
int offset = numAddresses == 1 ? 0 :
PlatformDependent.threadLocalRandom().nextInt(numAddresses);
- return this.addresses[offset];
+ return new InetSocketAddress(this.targets[offset].getHost(),
this.targets[offset].getPort());
}
}