You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by zh...@apache.org on 2023/07/19 09:26:06 UTC

[dolphinscheduler] branch dev updated: Support parse ipv6 (#14584)

This is an automated email from the ASF dual-hosted git repository.

zhongjiajie pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 93c3871925 Support parse ipv6 (#14584)
93c3871925 is described below

commit 93c387192562cd0e5680ede709626bff70ec942b
Author: Wenjun Ruan <we...@apache.org>
AuthorDate: Wed Jul 19 17:25:58 2023 +0800

    Support parse ipv6 (#14584)
---
 .../api/service/LoggerServiceTest.java             |   2 +-
 .../registry/api/RegistryClient.java               |   6 +-
 .../apache/dolphinscheduler/remote/utils/Host.java | 121 ++-------------------
 .../dolphinscheduler/remote/utils/HostTest.java    |   6 +-
 4 files changed, 21 insertions(+), 114 deletions(-)

diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java
index 51b9faf55c..8b0594faf6 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java
@@ -183,7 +183,7 @@ public class LoggerServiceTest {
                 .thenReturn(new byte[0]);
         Mockito.when(projectMapper.queryProjectByTaskInstanceId(1)).thenReturn(project);
         byte[] result = loggerService.getLogBytes(loginUser, 1);
-        Assertions.assertEquals(90, result.length);
+        Assertions.assertEquals(62, result.length);
     }
 
     @Test
diff --git a/dolphinscheduler-registry/dolphinscheduler-registry-api/src/main/java/org/apache/dolphinscheduler/registry/api/RegistryClient.java b/dolphinscheduler-registry/dolphinscheduler-registry-api/src/main/java/org/apache/dolphinscheduler/registry/api/RegistryClient.java
index 4423a0ffd1..6b8046b6e2 100644
--- a/dolphinscheduler-registry/dolphinscheduler-registry-api/src/main/java/org/apache/dolphinscheduler/registry/api/RegistryClient.java
+++ b/dolphinscheduler-registry/dolphinscheduler-registry-api/src/main/java/org/apache/dolphinscheduler/registry/api/RegistryClient.java
@@ -109,10 +109,10 @@ public class RegistryClient {
             // todo: add host, port in heartBeat Info, so that we don't need to parse this again
             server.setZkDirectory(registryNodeType.getRegistryPath() + "/" + serverPath);
             // set host and port
-            String[] hostAndPort = serverPath.split(Constants.COLON);
+            int lastColonIndex = serverPath.lastIndexOf(":");
             // fetch the last one
-            server.setHost(hostAndPort[0]);
-            server.setPort(Integer.parseInt(hostAndPort[1]));
+            server.setHost(serverPath.substring(0, lastColonIndex));
+            server.setPort(Integer.parseInt(serverPath.substring(lastColonIndex + 1)));
             serverList.add(server);
         }
         return serverList;
diff --git a/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/utils/Host.java b/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/utils/Host.java
index ccc4af829d..94a852ea33 100644
--- a/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/utils/Host.java
+++ b/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/utils/Host.java
@@ -17,33 +17,20 @@
 
 package org.apache.dolphinscheduler.remote.utils;
 
+import static org.apache.dolphinscheduler.common.constants.Constants.COLON;
+
 import java.io.Serializable;
-import java.util.Objects;
 
+import lombok.Data;
 import lombok.NonNull;
 
-/**
- * server address
- */
+@Data
 public class Host implements Serializable {
 
-    private static final String COLON = ":";
-
     public static final Host EMPTY = new Host();
 
-    /**
-     * address
-     */
-    private String address;
-
-    /**
-     * ip
-     */
     private String ip;
 
-    /**
-     * port
-     */
     private int port;
 
     public Host() {
@@ -52,107 +39,23 @@ public class Host implements Serializable {
     public Host(String ip, int port) {
         this.ip = ip;
         this.port = port;
-        this.address = ip + COLON + port;
     }
 
     public Host(String address) {
-        String[] parts = splitAddress(address);
-        this.ip = parts[0];
-        this.port = Integer.parseInt(parts[1]);
-        this.address = address;
-    }
-
-    public String getAddress() {
-        return address;
-    }
-
-    public void setAddress(String address) {
-        String[] parts = splitAddress(address);
-        this.ip = parts[0];
-        this.port = Integer.parseInt(parts[1]);
-        this.address = address;
-    }
-
-    public String getIp() {
-        return ip;
-    }
-
-    public void setIp(String ip) {
-        this.ip = ip;
-        this.address = ip + COLON + port;
-    }
-
-    public int getPort() {
-        return port;
-    }
-
-    public void setPort(int port) {
-        this.port = port;
-        this.address = ip + COLON + port;
-    }
-
-    /**
-     * address convert host
-     *
-     * @param address address
-     * @return host
-     */
-    public static Host of(@NonNull String address) {
-        String[] parts = splitAddress(address);
-        return new Host(parts[0], Integer.parseInt(parts[1]));
-    }
-
-    /**
-     * address convert host
-     *
-     * @param address address
-     * @return host
-     */
-    public static String[] splitAddress(String address) {
-        if (address == null) {
-            throw new IllegalArgumentException("Host : address is null.");
-        }
-        String[] parts = address.split(COLON);
-        if (parts.length != 2) {
+        int lastColonIndex = address.lastIndexOf(COLON);
+        if (lastColonIndex < 0) {
             throw new IllegalArgumentException(String.format("Host : %s illegal.", address));
         }
-        return parts;
-    }
-
-    /**
-     * whether old version
-     *
-     * @param address address
-     * @return old version is true , otherwise is false
-     */
-    public static Boolean isOldVersion(String address) {
-        String[] parts = address.split(COLON);
-        return parts.length != 2;
+        this.ip = address.substring(0, lastColonIndex);
+        this.port = Integer.parseInt(address.substring(lastColonIndex + 1));
     }
 
-    @Override
-    public String toString() {
-        return "Host{"
-                + "address='" + address + '\''
-                + ", ip='" + ip + '\''
-                + ", port=" + port
-                + '}';
+    public String getAddress() {
+        return ip + COLON + port;
     }
 
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        Host host = (Host) o;
-        return port == host.port && Objects.equals(address, host.address) && Objects.equals(ip, host.ip);
+    public static Host of(@NonNull String address) {
+        return new Host(address);
     }
 
-    @Override
-    public int hashCode() {
-        return Objects.hash(address, ip, port);
-    }
 }
diff --git a/dolphinscheduler-remote/src/test/java/org/apache/dolphinscheduler/remote/utils/HostTest.java b/dolphinscheduler-remote/src/test/java/org/apache/dolphinscheduler/remote/utils/HostTest.java
index ce8859fd9b..ce8a433a4b 100644
--- a/dolphinscheduler-remote/src/test/java/org/apache/dolphinscheduler/remote/utils/HostTest.java
+++ b/dolphinscheduler-remote/src/test/java/org/apache/dolphinscheduler/remote/utils/HostTest.java
@@ -29,9 +29,13 @@ public class HostTest {
     public void testHost() {
         Host host = Host.of("192.158.2.2:22");
         Assertions.assertEquals(22, host.getPort());
-        host.setAddress("127.0.0.1:8888");
+        host = new Host("127.0.0.1:8888");
         Assertions.assertEquals("127.0.0.1", host.getIp());
         Assertions.assertEquals(8888, host.getPort());
+
+        host = new Host("2001:db8:1::ab9:C0A8:102:5678");
+        Assertions.assertEquals("2001:db8:1::ab9:C0A8:102", host.getIp());
+        Assertions.assertEquals(5678, host.getPort());
     }
 
 }