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]); .thenReturn(new byte[0]);
Mockito.when(projectMapper.queryProjectByTaskInstanceId(1)).thenReturn(project); Mockito.when(projectMapper.queryProjectByTaskInstanceId(1)).thenReturn(project);
byte[] result = loggerService.getLogBytes(loginUser, 1); byte[] result = loggerService.getLogBytes(loginUser, 1);
Assertions.assertEquals(90, result.length); Assertions.assertEquals(62, result.length);
} }
@Test @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 // todo: add host, port in heartBeat Info, so that we don't need to parse this again
server.setZkDirectory(registryNodeType.getRegistryPath() + "/" + serverPath); server.setZkDirectory(registryNodeType.getRegistryPath() + "/" + serverPath);
// set host and port // set host and port
String[] hostAndPort = serverPath.split(Constants.COLON); int lastColonIndex = serverPath.lastIndexOf(":");
// fetch the last one // fetch the last one
server.setHost(hostAndPort[0]); server.setHost(serverPath.substring(0, lastColonIndex));
server.setPort(Integer.parseInt(hostAndPort[1])); server.setPort(Integer.parseInt(serverPath.substring(lastColonIndex + 1)));
serverList.add(server); serverList.add(server);
} }
return serverList; 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; package org.apache.dolphinscheduler.remote.utils;
import static org.apache.dolphinscheduler.common.constants.Constants.COLON;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects;
import lombok.Data;
import lombok.NonNull; import lombok.NonNull;
/** @Data
* server address
*/
public class Host implements Serializable { public class Host implements Serializable {
private static final String COLON = ":";
public static final Host EMPTY = new Host(); public static final Host EMPTY = new Host();
/**
* address
*/
private String address;
/**
* ip
*/
private String ip; private String ip;
/**
* port
*/
private int port; private int port;
public Host() { public Host() {
@ -52,107 +39,23 @@ public class Host implements Serializable {
public Host(String ip, int port) { public Host(String ip, int port) {
this.ip = ip; this.ip = ip;
this.port = port; this.port = port;
this.address = ip + COLON + port;
} }
public Host(String address) { public Host(String address) {
String[] parts = splitAddress(address); int lastColonIndex = address.lastIndexOf(COLON);
this.ip = parts[0]; if (lastColonIndex < 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) {
throw new IllegalArgumentException(String.format("Host : %s illegal.", address)); throw new IllegalArgumentException(String.format("Host : %s illegal.", address));
} }
return parts; this.ip = address.substring(0, lastColonIndex);
} this.port = Integer.parseInt(address.substring(lastColonIndex + 1));
/**
* 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;
} }
@Override public String getAddress() {
public String toString() { return ip + COLON + port;
return "Host{"
+ "address='" + address + '\''
+ ", ip='" + ip + '\''
+ ", port=" + port
+ '}';
} }
@Override public static Host of(@NonNull String address) {
public boolean equals(Object o) { return new Host(address);
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);
} }
@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() { public void testHost() {
Host host = Host.of("192.158.2.2:22"); Host host = Host.of("192.158.2.2:22");
Assertions.assertEquals(22, host.getPort()); 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("127.0.0.1", host.getIp());
Assertions.assertEquals(8888, host.getPort()); 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