Browse Source

Support parse ipv6 (#14584)

3.2.1-prepare
Wenjun Ruan 1 year ago committed by GitHub
parent
commit
93c3871925
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/LoggerServiceTest.java
  2. 6
      dolphinscheduler-registry/dolphinscheduler-registry-api/src/main/java/org/apache/dolphinscheduler/registry/api/RegistryClient.java
  3. 121
      dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/utils/Host.java
  4. 6
      dolphinscheduler-remote/src/test/java/org/apache/dolphinscheduler/remote/utils/HostTest.java

2
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

6
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;

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

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

Loading…
Cancel
Save