You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2021/05/25 02:24:08 UTC
[kylin] branch master updated: fix bug
This is an automated email from the ASF dual-hosted git repository.
xxyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push:
new 8cc6c84 fix bug
8cc6c84 is described below
commit 8cc6c84926261fde3c4f5266d0be84bb1f1e6dd5
Author: yaqian.zhang <59...@qq.com>
AuthorDate: Sun Apr 25 16:52:22 2021 +0800
fix bug
---
.../apache/kylin/common/util/CliCommandExecutor.java | 10 +++++++++-
.../java/org/apache/kylin/common/util/ServerMode.java | 3 +--
.../apache/kylin/rest/service/StreamingV2Service.java | 4 ++++
.../coordinator/client/CoordinatorClientFactory.java | 17 ++++++++++++-----
.../java/org/apache/kylin/stream/core/model/Node.java | 2 ++
5 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/CliCommandExecutor.java b/core-common/src/main/java/org/apache/kylin/common/util/CliCommandExecutor.java
index 74ea1f9..bbb4f4a 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/CliCommandExecutor.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/CliCommandExecutor.java
@@ -166,7 +166,7 @@ public class CliCommandExecutor {
public static final String COMMAND_BLOCK_LIST = "[ &`>|{}()$;\\-#~!+*\\\\]+";
public static final String COMMAND_WHITE_LIST = "[^\\w%,@/:=?.\"\\[\\]]";
public static final String HIVE_BLOCK_LIST = "[ <>()$;\\-#!+*\"'/=%@]+";
-
+ public static final String HOST_NAME_WHITE_LIST = "[^-.a-zA-Z0-9]";
/**
* <pre>
@@ -201,6 +201,14 @@ public class CliCommandExecutor {
return checkParameter(hiveProperty, HIVE_BLOCK_LIST);
}
+ public static void checkHostName(String nodeName) {
+ String repaired = nodeName.replaceAll(HOST_NAME_WHITE_LIST, "");
+ if (repaired.length() != nodeName.length()) {
+ throw new IllegalArgumentException("Detected illegal character in host name " + nodeName + " by "
+ + HOST_NAME_WHITE_LIST + ", operation not allowed.");
+ }
+ }
+
private static String checkParameter(String commandParameter, String rex) {
String repaired = commandParameter.replaceAll(rex, "");
if (repaired.length() != commandParameter.length()) {
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/ServerMode.java b/core-common/src/main/java/org/apache/kylin/common/util/ServerMode.java
index 3dfb5cd..880b933 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/ServerMode.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/ServerMode.java
@@ -46,8 +46,7 @@ public class ServerMode {
}
public boolean canServeStreamingCoordinator() {
- return serverModes.contains(SERVER_MODE_ALL)
- || serverModes.contains(SERVER_MODE_STREAM_COORDINATOR);
+ return serverModes.contains(SERVER_MODE_STREAM_COORDINATOR);
}
public boolean canServeAll() {
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/StreamingV2Service.java b/server-base/src/main/java/org/apache/kylin/rest/service/StreamingV2Service.java
index 3ef0ee2..7cb85c6 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/StreamingV2Service.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/StreamingV2Service.java
@@ -437,6 +437,10 @@ public class StreamingV2Service extends BasicService {
for (Node receiver : receivers) {
Future<ReceiverStats> futureStats = statsFuturesMap.get(receiver);
try {
+ if (futureStats == null) {
+ logger.warn("Receiver node {} can not be connect.", receiver);
+ continue;
+ }
ReceiverStats receiverStats = futureStats.get();
receiverStatsMap.put(receiver, receiverStats);
} catch (InterruptedException e) {
diff --git a/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/client/CoordinatorClientFactory.java b/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/client/CoordinatorClientFactory.java
index 6c8fa16..6a894f5 100644
--- a/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/client/CoordinatorClientFactory.java
+++ b/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/client/CoordinatorClientFactory.java
@@ -18,9 +18,6 @@
package org.apache.kylin.stream.coordinator.client;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-
import org.apache.kylin.common.KylinConfig;
import org.apache.kylin.stream.coordinator.Coordinator;
import org.apache.kylin.stream.coordinator.StreamMetadataStore;
@@ -56,8 +53,18 @@ public class CoordinatorClientFactory {
logger.warn("no coordinator node registered");
return false;
}
- InetAddress inetAddress = InetAddress.getByName(coordinatorNode.getHost());
- return NetworkInterface.getByInetAddress(inetAddress) != null;
+ String hostAddr = KylinConfig.getInstanceFromEnv().getServerRestAddress();
+ String[] hostAddrInfo = hostAddr.split(":");
+ if (hostAddrInfo.length < 2) {
+ logger.error("kylin.server.host-address {} is not qualified ", hostAddr);
+ throw new RuntimeException("kylin.server.host-address " + hostAddr + " is not qualified");
+ }
+ String host = hostAddrInfo[0];
+ int port = Integer.parseInt(hostAddrInfo[1]);
+
+ if (!host.equals(coordinatorNode.getHost()) || port != coordinatorNode.getPort()) {
+ return false;
+ }
} catch (Exception e) {
logger.error("Error when check network interface.", e);
}
diff --git a/stream-core/src/main/java/org/apache/kylin/stream/core/model/Node.java b/stream-core/src/main/java/org/apache/kylin/stream/core/model/Node.java
index b54ab12..1801655 100644
--- a/stream-core/src/main/java/org/apache/kylin/stream/core/model/Node.java
+++ b/stream-core/src/main/java/org/apache/kylin/stream/core/model/Node.java
@@ -23,6 +23,7 @@ import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.kylin.common.util.CliCommandExecutor;
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
public class Node {
@@ -35,6 +36,7 @@ public class Node {
@JsonCreator
public Node(@JsonProperty("host") String host, @JsonProperty("port") int port) {
+ CliCommandExecutor.checkHostName(host);
this.host = host;
this.port = port;
}