This is an automated email from the ASF dual-hosted git repository.
caogaofei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 0af48606c3 [IOTDB-4223] Maintain default node ip config (#7254)
0af48606c3 is described below
commit 0af48606c36acf9a937e234074866893c9ebfe5b
Author: YongzaoDan <[email protected]>
AuthorDate: Wed Sep 7 11:22:57 2022 +0800
[IOTDB-4223] Maintain default node ip config (#7254)
---
.../resources/conf/iotdb-confignode.properties | 6 ++++--
.../iotdb/confignode/conf/ConfigNodeConfig.java | 2 +-
.../confignode/conf/ConfigNodeDescriptor.java | 4 +++-
.../confignode/conf/ConfigNodeStartupCheck.java | 7 +++++++
.../commons/exception/ConfigurationException.java | 23 ++++++++++++++++++++--
.../apache/iotdb/commons/utils/NodeUrlUtils.java | 7 +++++++
.../resources/conf/iotdb-datanode.properties | 6 ++++--
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 2 +-
.../org/apache/iotdb/db/conf/IoTDBStartCheck.java | 1 +
.../java/org/apache/iotdb/db/service/DataNode.java | 8 +++++++-
10 files changed, 56 insertions(+), 10 deletions(-)
diff --git a/confignode/src/assembly/resources/conf/iotdb-confignode.properties
b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
index 68afea0736..14a35108cb 100644
--- a/confignode/src/assembly/resources/conf/iotdb-confignode.properties
+++ b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
@@ -22,7 +22,8 @@
####################
-# could set ip or hostname
+# Used for cluster internal RPC communication.
+# Could set 0.0.0.0, 127.0.0.1(for local test) or ipv4 address.
# Datatype: String
internal_address=0.0.0.0
@@ -43,8 +44,9 @@ consensus_port=22278
# and the port should be consistent with the target ConfigNode's
confignode_internal_port.
# For the first ConfigNode to start, target_config_nodes points to its own
internal_address:internal_port.
# For other ConfigNodes that are started or restarted, target_config_nodes
points to any running ConfigNode's internal_address:internal_port.
+# Notice: The ip for any target_config_node should never be 0.0.0.0
# Datatype: String
-target_config_nodes=0.0.0.0:22277
+target_config_nodes=127.0.0.1:22277
####################
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
index faef338857..6ea9cfa73b 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
@@ -39,7 +39,7 @@ public class ConfigNodeConfig {
private int consensusPort = 22278;
/** Used for connecting to the ConfigNodeGroup */
- private TEndPoint targetConfigNode = new TEndPoint("0.0.0.0", 22277);
+ private TEndPoint targetConfigNode = new TEndPoint("127.0.0.1", 22277);
// TODO: Read from iotdb-confignode.properties
private int partitionRegionId = 0;
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
index 624e8c98c1..394485ba89 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
@@ -285,7 +285,9 @@ public class ConfigNodeDescriptor {
* @return True if the target_config_nodes points to itself
*/
public boolean isSeedConfigNode() {
- return conf.getInternalAddress().equals(conf.getTargetConfigNode().getIp())
+ return
(conf.getInternalAddress().equals(conf.getTargetConfigNode().getIp())
+ || (NodeUrlUtils.isLocalAddress(conf.getInternalAddress())
+ &&
NodeUrlUtils.isLocalAddress(conf.getTargetConfigNode().getIp())))
&& conf.getInternalPort() == conf.getTargetConfigNode().getPort();
}
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
index 4afab64920..44a57cf690 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
@@ -92,11 +92,18 @@ public class ConfigNodeStartupCheck {
"%s or %s", ConsensusFactory.StandAloneConsensus,
ConsensusFactory.RatisConsensus));
}
+ // The routing policy is limited
if (!CONF.getRoutingPolicy().equals(RouteBalancer.LEADER_POLICY)
&& !CONF.getRoutingPolicy().equals(RouteBalancer.GREEDY_POLICY)) {
throw new ConfigurationException(
"routing_policy", CONF.getRoutingPolicy(), "leader or greedy");
}
+
+ // The ip of target ConfigNode couldn't be 0.0.0.0
+ if (CONF.getTargetConfigNode().getIp().equals("0.0.0.0")) {
+ throw new ConfigurationException(
+ "The ip address of any target_config_nodes couldn't be 0.0.0.0");
+ }
}
private void createDirsIfNecessary() throws IOException {
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/exception/ConfigurationException.java
b/node-commons/src/main/java/org/apache/iotdb/commons/exception/ConfigurationException.java
index 1c7d36e79c..7f5a6546d4 100644
---
a/node-commons/src/main/java/org/apache/iotdb/commons/exception/ConfigurationException.java
+++
b/node-commons/src/main/java/org/apache/iotdb/commons/exception/ConfigurationException.java
@@ -22,9 +22,14 @@ package org.apache.iotdb.commons.exception;
import org.apache.iotdb.rpc.TSStatusCode;
public class ConfigurationException extends IoTDBException {
- final String parameter;
- final String correctValue;
+ private String parameter;
+ private String correctValue;
+ /**
+ * @param parameter The error parameter
+ * @param badValue The bad value
+ * @param correctValue The correct value (if it could be listed)
+ */
public ConfigurationException(String parameter, String badValue, String
correctValue) {
super(
String.format(
@@ -34,6 +39,20 @@ public class ConfigurationException extends IoTDBException {
this.correctValue = correctValue;
}
+ /**
+ * @param parameter The error parameter
+ * @param badValue The bad value
+ */
+ public ConfigurationException(String parameter, String badValue) {
+ super(
+ String.format("Parameter %s can not be %s", parameter, badValue),
+ TSStatusCode.CONFIG_ERROR.getStatusCode());
+ }
+
+ public ConfigurationException(String errorStr) {
+ super(errorStr, TSStatusCode.CONFIG_ERROR.getStatusCode());
+ }
+
public String getParameter() {
return parameter;
}
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/utils/NodeUrlUtils.java
b/node-commons/src/main/java/org/apache/iotdb/commons/utils/NodeUrlUtils.java
index 39614cc469..aa727d8769 100644
---
a/node-commons/src/main/java/org/apache/iotdb/commons/utils/NodeUrlUtils.java
+++
b/node-commons/src/main/java/org/apache/iotdb/commons/utils/NodeUrlUtils.java
@@ -187,4 +187,11 @@ public class NodeUrlUtils {
throws BadNodeUrlException {
return parseTConfigNodeUrls(Arrays.asList(configNodeUrls.split(";")));
}
+
+ public static boolean isLocalAddress(String ip) {
+ if (ip == null) {
+ return false;
+ }
+ return ip.equals("0.0.0.0") || ip.equals("127.0.0.1") ||
ip.equals("localhost");
+ }
}
diff --git a/server/src/assembly/resources/conf/iotdb-datanode.properties
b/server/src/assembly/resources/conf/iotdb-datanode.properties
index a094e38433..c230f7771b 100644
--- a/server/src/assembly/resources/conf/iotdb-datanode.properties
+++ b/server/src/assembly/resources/conf/iotdb-datanode.properties
@@ -21,6 +21,7 @@
### RPC Configuration
####################
+# could set 0.0.0.0, 127.0.0.1(for local test) or ipv4 address
# Datatype: String
rpc_address=0.0.0.0
@@ -44,8 +45,8 @@ mpp_data_exchange_port=8777
# Datatype: String
# used for communication between cluster nodes.
-# if this parameter is commented, then the IP that binded by the hostname will
be used.
-internal_address=127.0.0.1
+# could set 0.0.0.0, 127.0.0.1(for local test) or ipv4 address.
+internal_address=0.0.0.0
# Datatype: int
# port for coordinator's communication between cluster nodes.
@@ -66,6 +67,7 @@ schema_region_consensus_port=50010
# When successfully connecting to the ConfigNodeGroup, DataNode will get all
online
# config nodes and store them in memory.
# Datatype: String
+# Notice: The ip for any target_config_node should never be 0.0.0.0
target_config_nodes=127.0.0.1:22277
# Datatype: boolean
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 0b03d48010..970a3a4007 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -852,7 +852,7 @@ public class IoTDBConfig {
private int pageCacheSizeInSchemaFile = 1024;
/** Internal address for data node */
- private String internalAddress = "127.0.0.1";
+ private String internalAddress = "0.0.0.0";
/** Internal port for coordinator */
private int internalPort = 9003;
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
index ce6ec46351..f55caa5385 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
@@ -113,6 +113,7 @@ public class IoTDBStartCheck {
private static final String SCHEMA_REGION_CONSENSUS_PROTOCOL =
"schema_region_consensus_protocol";
private static final String DATA_REGION_CONSENSUS_PROTOCOL =
"data_region_consensus_protocol";
+
private static final String IOTDB_VERSION_STRING = "iotdb_version";
public static IoTDBStartCheck getInstance() {
diff --git a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
index 5efdbd64f4..9e8a004e00 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
@@ -111,11 +111,17 @@ public class DataNode implements DataNodeMBean {
IoTDBStartCheck.getInstance().checkConfig();
// TODO: check configuration for data node
+ for (TEndPoint endPoint : config.getTargetConfigNodeList()) {
+ if (endPoint.getIp().equals("0.0.0.0")) {
+ throw new ConfigurationException(
+ "The ip address of any target_config_nodes couldn't be 0.0.0.0");
+ }
+ }
+
// if client ip is the default address, set it same with internal ip
if (config.getRpcAddress().equals("0.0.0.0")) {
config.setRpcAddress(config.getInternalAddress());
}
-
thisNode.setIp(IoTDBDescriptor.getInstance().getConfig().getInternalAddress());
thisNode.setPort(IoTDBDescriptor.getInstance().getConfig().getInternalPort());
}