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());
     }
 }

Reply via email to