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

tanxinyu 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 aa091b0882b [IOTDB-6193] Reject Node startup when loading 
configuration file failed (#11331)
aa091b0882b is described below

commit aa091b0882b94916d0a0c7cb02e98ee350248306
Author: Yongzao <[email protected]>
AuthorDate: Wed Oct 18 13:37:04 2023 +0800

    [IOTDB-6193] Reject Node startup when loading configuration file failed 
(#11331)
---
 .../confignode/conf/ConfigNodeDescriptor.java      | 15 ++++++-----
 .../confignode/conf/SystemPropertiesUtils.java     | 14 +++++++++-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  | 30 ++++++++++++++++------
 .../iotdb/commons/conf/CommonDescriptor.java       | 16 +++---------
 4 files changed, 47 insertions(+), 28 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
index c3cde6d07b2..3fc8a75da34 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
@@ -106,11 +106,14 @@ public class ConfigNodeDescriptor {
         commonProperties.load(inputStream);
 
       } catch (FileNotFoundException e) {
-        LOGGER.warn("Fail to find config file {}", url, e);
+        LOGGER.error("Fail to find config file {}, reject ConfigNode 
startup.", url, e);
+        System.exit(-1);
       } catch (IOException e) {
-        LOGGER.warn("Cannot load config file, use default configuration", e);
+        LOGGER.error("Cannot load config file, reject ConfigNode startup.", e);
+        System.exit(-1);
       } catch (Exception e) {
-        LOGGER.warn("Incorrect format in config file, use default 
configuration", e);
+        LOGGER.error("Incorrect format in config file, reject ConfigNode 
startup.", e);
+        System.exit(-1);
       }
     } else {
       LOGGER.warn(
@@ -127,7 +130,8 @@ public class ConfigNodeDescriptor {
         commonProperties.putAll(properties);
         loadProperties(commonProperties);
       } catch (IOException | BadNodeUrlException e) {
-        LOGGER.warn("Couldn't load ConfigNode conf file, use default config", 
e);
+        LOGGER.error("Couldn't load ConfigNode conf file, reject ConfigNode 
startup.", e);
+        System.exit(-1);
       } finally {
         conf.updatePath();
         commonDescriptor
@@ -268,8 +272,7 @@ public class ConfigNodeDescriptor {
                       "region_group_allocate_policy", 
conf.getRegionGroupAllocatePolicy().name())
                   .trim()));
     } catch (IllegalArgumentException e) {
-      LOGGER.warn(
-          "The configured region allocate strategy does not exist, use the 
default: GREEDY!");
+      throw new IOException(e);
     }
 
     conf.setCnRpcAdvancedCompressionEnable(
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/SystemPropertiesUtils.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/SystemPropertiesUtils.java
index 0f7b9e4f85f..9faebf545df 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/SystemPropertiesUtils.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/SystemPropertiesUtils.java
@@ -57,6 +57,7 @@ public class SystemPropertiesUtils {
   private static final String CN_INTERNAL_ADDRESS = "cn_internal_address";
   private static final String CN_INTERNAL_PORT = "cn_internal_port";
   private static final String CN_CONSENSUS_PORT = "cn_consensus_port";
+  private static final String TIMESTAMP_PRECISION = "timestamp_precision";
   private static final String CN_CONSENSUS_PROTOCOL = 
"config_node_consensus_protocol_class";
   private static final String DATA_CONSENSUS_PROTOCOL = 
"data_region_consensus_protocol_class";
   private static final String SCHEMA_CONSENSUS_PROTOCOL = 
"schema_region_consensus_protocol_class";
@@ -127,6 +128,17 @@ public class SystemPropertiesUtils {
       }
     }
 
+    if (systemProperties.getProperty(TIMESTAMP_PRECISION, null) == null) {
+      needReWrite = true;
+    } else {
+      String timestampPrecision = 
systemProperties.getProperty(TIMESTAMP_PRECISION);
+      if (!timestampPrecision.equals(COMMON_CONFIG.getTimestampPrecision())) {
+        LOGGER.warn(
+            format, TIMESTAMP_PRECISION, 
COMMON_CONFIG.getTimestampPrecision(), timestampPrecision);
+        COMMON_CONFIG.setTimestampPrecision(timestampPrecision);
+      }
+    }
+
     // Consensus protocol configuration
     String configNodeConsensusProtocolClass =
         systemProperties.getProperty(CN_CONSENSUS_PROTOCOL, null);
@@ -280,7 +292,7 @@ public class SystemPropertiesUtils {
         SERIES_PARTITION_EXECUTOR_CLASS, 
conf.getSeriesPartitionExecutorClass());
     systemProperties.setProperty(
         TIME_PARTITION_INTERVAL, 
String.valueOf(COMMON_CONFIG.getTimePartitionInterval()));
-    systemProperties.setProperty("timestamp_precision", 
COMMON_CONFIG.getTimestampPrecision());
+    systemProperties.setProperty(TIMESTAMP_PRECISION, 
COMMON_CONFIG.getTimestampPrecision());
 
     // DataNode Functions
     systemProperties.setProperty("schema_engine_mode", 
COMMON_CONFIG.getSchemaEngineMode());
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 2e94b53f2bb..225dd8e27f3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -90,7 +90,15 @@ public class IoTDBDescriptor {
     for (IPropertiesLoader loader : propertiesLoaderServiceLoader) {
       logger.info("Will reload properties from {} ", 
loader.getClass().getName());
       Properties properties = loader.loadProperties();
-      loadProperties(properties);
+      try {
+        loadProperties(properties);
+      } catch (Exception e) {
+        logger.error(
+            "Failed to reload properties from {}, reject DataNode startup.",
+            loader.getClass().getName(),
+            e);
+        System.exit(-1);
+      }
       conf.setCustomizedProperties(loader.getCustomizedProperties());
       
TSFileDescriptor.getInstance().overwriteConfigByCustomSettings(properties);
       TSFileDescriptor.getInstance()
@@ -163,11 +171,14 @@ public class IoTDBDescriptor {
         logger.info("Start to read config file {}", url);
         commonProperties.load(inputStream);
       } catch (FileNotFoundException e) {
-        logger.warn("Fail to find config file {}", url, e);
+        logger.error("Fail to find config file {}, reject DataNode startup.", 
url, e);
+        System.exit(-1);
       } catch (IOException e) {
-        logger.warn("Cannot load config file, use default configuration", e);
+        logger.error("Cannot load config file, reject DataNode startup.", e);
+        System.exit(-1);
       } catch (Exception e) {
-        logger.warn("Incorrect format in config file, use default 
configuration", e);
+        logger.error("Incorrect format in config file, reject DataNode 
startup.", e);
+        System.exit(-1);
       }
     } else {
       logger.warn(
@@ -183,11 +194,14 @@ public class IoTDBDescriptor {
         commonProperties.putAll(properties);
         loadProperties(commonProperties);
       } catch (FileNotFoundException e) {
-        logger.warn("Fail to find config file {}", url, e);
+        logger.error("Fail to find config file {}, reject DataNode startup.", 
url, e);
+        System.exit(-1);
       } catch (IOException e) {
-        logger.warn("Cannot load config file, use default configuration", e);
+        logger.error("Cannot load config file, reject DataNode startup.", e);
+        System.exit(-1);
       } catch (Exception e) {
-        logger.warn("Incorrect format in config file, use default 
configuration", e);
+        logger.error("Incorrect format in config file, reject DataNode 
startup.", e);
+        System.exit(-1);
       } finally {
         // update all data seriesPath
         conf.updatePath();
@@ -205,7 +219,7 @@ public class IoTDBDescriptor {
     }
   }
 
-  public void loadProperties(Properties properties) {
+  public void loadProperties(Properties properties) throws BadNodeUrlException 
{
     conf.setClusterSchemaLimitLevel(
         properties
             .getProperty("cluster_schema_limit_level", 
conf.getClusterSchemaLimitLevel())
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
index 7ea9f561d0a..542806bf195 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
@@ -25,16 +25,11 @@ import org.apache.iotdb.commons.utils.CommonDateTimeUtils;
 import org.apache.iotdb.commons.utils.NodeUrlUtils;
 import org.apache.iotdb.confignode.rpc.thrift.TGlobalConfig;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.io.File;
 import java.util.Properties;
 
 public class CommonDescriptor {
 
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(CommonDescriptor.class);
-
   private final CommonConfig config = new CommonConfig();
 
   private CommonDescriptor() {}
@@ -62,7 +57,7 @@ public class CommonDescriptor {
     config.setProcedureWalFolder(systemDir + File.separator + "procedure");
   }
 
-  public void loadCommonProps(Properties properties) {
+  public void loadCommonProps(Properties properties) throws 
BadNodeUrlException {
     config.setAuthorizerProvider(
         properties.getProperty("authorizer_provider_class", 
config.getAuthorizerProvider()).trim());
     // if using org.apache.iotdb.db.auth.authorizer.OpenIdAuthorizer, 
openID_url is needed.
@@ -216,13 +211,8 @@ public class CommonDescriptor {
             
NodeUrlUtils.convertTEndPointUrl(config.getTargetMLNodeEndPoint()));
 
     loadPipeProps(properties);
-    try {
-      
config.setTargetMLNodeEndPoint(NodeUrlUtils.parseTEndPointUrl(endPointUrl));
-    } catch (BadNodeUrlException e) {
-      LOGGER.warn(
-          "Illegal target MLNode endpoint url format in config file: {}, use 
default configuration.",
-          endPointUrl);
-    }
+
+    
config.setTargetMLNodeEndPoint(NodeUrlUtils.parseTEndPointUrl(endPointUrl));
 
     config.setSchemaEngineMode(
         properties.getProperty("schema_engine_mode", 
String.valueOf(config.getSchemaEngineMode())));

Reply via email to