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

qiaojialin 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 6842cfa7ed Enable time partition by default (#6807)
6842cfa7ed is described below

commit 6842cfa7ed61e9367bfd169e1ae0c9831a676219
Author: Haonan <[email protected]>
AuthorDate: Fri Aug 12 23:45:43 2022 +0800

    Enable time partition by default (#6807)
---
 .../iotdb/db/integration/IoTDBCheckConfigIT.java   |  5 +--
 .../resources/conf/iotdb-datanode.properties       |  2 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  2 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  1 +
 .../org/apache/iotdb/db/conf/IoTDBStartCheck.java  | 36 ++++++++++++++++++++++
 .../org/apache/iotdb/db/engine/StorageEngine.java  |  3 ++
 .../apache/iotdb/db/engine/StorageEngineV2.java    |  6 ++++
 .../iotdb/db/engine/storagegroup/DataRegion.java   |  4 +--
 .../java/org/apache/iotdb/db/service/DataNode.java | 16 +---------
 9 files changed, 54 insertions(+), 21 deletions(-)

diff --git 
a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
 
b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
index 488522cf59..79a3735c8a 100644
--- 
a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
+++ 
b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
@@ -70,10 +70,10 @@ public class IoTDBCheckConfigIT {
     console = System.out;
     System.setOut(new PrintStream(bytes));
 
-    systemProperties.put("partition_interval", "9223372036854775807");
+    systemProperties.put("partition_interval", "604800");
     systemProperties.put("timestamp_precision", "ms");
     systemProperties.put("tsfile_storage_fs", "LOCAL");
-    systemProperties.put("enable_partition", "false");
+    systemProperties.put("enable_partition", "true");
     systemProperties.put("max_degree_of_index_node", "256");
     systemProperties.put("tag_attribute_total_size", "700");
     systemProperties.put("iotdb_version", "0.13.0");
@@ -112,6 +112,7 @@ public class IoTDBCheckConfigIT {
     try {
       IoTDBStartCheck.getInstance().checkConfig();
     } catch (ConfigurationException t) {
+      t.printStackTrace();
       assertEquals("time_encoder", t.getParameter());
       assertEquals("REGULAR", t.getCorrectValue());
       return;
diff --git a/server/src/assembly/resources/conf/iotdb-datanode.properties 
b/server/src/assembly/resources/conf/iotdb-datanode.properties
index 772d4fdba8..0b50acd73f 100644
--- a/server/src/assembly/resources/conf/iotdb-datanode.properties
+++ b/server/src/assembly/resources/conf/iotdb-datanode.properties
@@ -1009,7 +1009,7 @@ timestamp_precision=ms
 
 # whether enable data partition. If disabled, all data belongs to partition 0
 # Datatype: boolean
-# enable_partition=false
+# enable_partition=true
 
 # time range for partitioning data inside each storage group, the unit is 
second
 # Datatype: long
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 67c2e10336..519fee203e 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
@@ -714,7 +714,7 @@ public class IoTDBConfig {
   private int primitiveArraySize = 32;
 
   /** whether enable data partition. If disabled, all data belongs to 
partition 0 */
-  private boolean enablePartition = false;
+  private boolean enablePartition = true;
 
   /**
    * Time range for partitioning data inside each storage group, the unit is 
second. Default time is
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java 
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index ba94aa0fb7..29ea7ce6a2 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -1776,6 +1776,7 @@ public class IoTDBDescriptor {
     
conf.setSeriesPartitionExecutorClass(globalConfig.getSeriesPartitionExecutorClass());
     conf.setSeriesPartitionSlotNum(globalConfig.getSeriesPartitionSlotNum());
     conf.setPartitionInterval(globalConfig.timePartitionInterval);
+    conf.setReadConsistencyLevel(globalConfig.getReadConsistencyLevel());
   }
 
   private static class IoTDBDescriptorHolder {
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 ec23692ef3..17a34ef9ce 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
@@ -22,6 +22,7 @@ import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.exception.ConfigurationException;
 import org.apache.iotdb.commons.file.SystemFileFactory;
+import org.apache.iotdb.confignode.rpc.thrift.TGlobalConfig;
 import org.apache.iotdb.db.metadata.upgrade.MetadataUpgrader;
 import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
@@ -464,6 +465,41 @@ public class IoTDBStartCheck {
     FileUtils.moveFile(tmpPropertiesFile, propertiesFile);
   }
 
+  public void serializeGlobalConfig(TGlobalConfig globalConfig) throws 
IOException {
+    // create an empty tmpPropertiesFile
+    if (tmpPropertiesFile.createNewFile()) {
+      logger.info("Create system.properties.tmp {}.", tmpPropertiesFile);
+    } else {
+      logger.error("Create system.properties.tmp {} failed.", 
tmpPropertiesFile);
+      System.exit(-1);
+    }
+
+    reloadProperties();
+
+    try (FileOutputStream tmpFOS = new 
FileOutputStream(tmpPropertiesFile.toString())) {
+
+      if (!checkConsensusProtocolExists(TConsensusGroupType.DataRegion)) {
+        properties.setProperty(
+            DATA_REGION_CONSENSUS_PROTOCOL, 
globalConfig.getDataRegionConsensusProtocolClass());
+      }
+      if (!checkConsensusProtocolExists(TConsensusGroupType.SchemaRegion)) {
+        properties.setProperty(
+            SCHEMA_REGION_CONSENSUS_PROTOCOL, 
globalConfig.getSchemaRegionConsensusProtocolClass());
+      }
+      properties.setProperty(
+          PARTITION_INTERVAL_STRING, 
String.valueOf(globalConfig.timePartitionInterval));
+      properties.setProperty(
+          PARTITION_INTERVAL_STRING, 
String.valueOf(globalConfig.timePartitionInterval));
+      properties.store(tmpFOS, SYSTEM_PROPERTIES_STRING);
+      // serialize finished, delete old system.properties file
+      if (propertiesFile.exists()) {
+        Files.delete(propertiesFile.toPath());
+      }
+    }
+    // rename system.properties.tmp to system.properties
+    FileUtils.moveFile(tmpPropertiesFile, propertiesFile);
+  }
+
   public boolean checkConsensusProtocolExists(TConsensusGroupType type) {
     if (type == TConsensusGroupType.DataRegion) {
       return properties.containsKey(DATA_REGION_CONSENSUS_PROTOCOL);
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java 
b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index e41870df46..ab461f6b8c 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -179,6 +179,9 @@ public class StorageEngine implements IService {
   }
 
   public static long getTimePartition(long time) {
+    if (timePartitionInterval == -1) {
+      initTimePartition();
+    }
     return enablePartition ? time / timePartitionInterval : 0;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java 
b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
index 2c51263a1e..2cef4a19a0 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
@@ -172,6 +172,9 @@ public class StorageEngineV2 implements IService {
   }
 
   public static long getTimePartition(long time) {
+    if (timePartitionInterval == -1) {
+      initTimePartition();
+    }
     return enablePartition ? time / timePartitionInterval : 0;
   }
 
@@ -207,6 +210,9 @@ public class StorageEngineV2 implements IService {
   public static TTimePartitionSlot getTimePartitionSlot(long time) {
     TTimePartitionSlot timePartitionSlot = new TTimePartitionSlot();
     if (enablePartition) {
+      if (timePartitionInterval == -1) {
+        initTimePartition();
+      }
       timePartitionSlot.setStartTime(time - time % timePartitionInterval);
     } else {
       timePartitionSlot.setStartTime(0);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
index 3c08cb50cb..5ff47806d2 100755
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
@@ -902,7 +902,7 @@ public class DataRegion {
     writeLock("InsertRow");
     try {
       // init map
-      long timePartitionId = 
StorageEngine.getTimePartition(insertRowNode.getTime());
+      long timePartitionId = 
StorageEngineV2.getTimePartition(insertRowNode.getTime());
 
       lastFlushTimeManager.ensureFlushedTimePartition(timePartitionId);
 
@@ -3496,7 +3496,7 @@ public class DataRegion {
           continue;
         }
         // init map
-        long timePartitionId = 
StorageEngine.getTimePartition(insertRowNode.getTime());
+        long timePartitionId = 
StorageEngineV2.getTimePartition(insertRowNode.getTime());
 
         lastFlushTimeManager.ensureFlushedTimePartition(timePartitionId);
         // as the plans have been ordered, and we have get the write lock,
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 293663e71e..5dd30de66f 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
@@ -194,28 +194,14 @@ public class DataNode implements DataNodeMBean {
               .checkConsensusProtocolExists(TConsensusGroupType.DataRegion)) {
             config.setDataRegionConsensusProtocolClass(
                 
dataNodeRegisterResp.globalConfig.getDataRegionConsensusProtocolClass());
-            IoTDBStartCheck.getInstance()
-                .serializeConsensusProtocol(
-                    
dataNodeRegisterResp.globalConfig.getDataRegionConsensusProtocolClass(),
-                    TConsensusGroupType.DataRegion);
           }
 
           if (!IoTDBStartCheck.getInstance()
               .checkConsensusProtocolExists(TConsensusGroupType.SchemaRegion)) 
{
             config.setSchemaRegionConsensusProtocolClass(
                 
dataNodeRegisterResp.globalConfig.getSchemaRegionConsensusProtocolClass());
-            IoTDBStartCheck.getInstance()
-                .serializeConsensusProtocol(
-                    
dataNodeRegisterResp.globalConfig.getSchemaRegionConsensusProtocolClass(),
-                    TConsensusGroupType.SchemaRegion);
           }
-
-          config.setSeriesPartitionExecutorClass(
-              
dataNodeRegisterResp.globalConfig.getSeriesPartitionExecutorClass());
-          config.setSeriesPartitionSlotNum(
-              dataNodeRegisterResp.globalConfig.getSeriesPartitionSlotNum());
-          config.setReadConsistencyLevel(
-              dataNodeRegisterResp.globalConfig.getReadConsistencyLevel());
+          
IoTDBStartCheck.getInstance().serializeGlobalConfig(dataNodeRegisterResp.globalConfig);
 
           logger.info("Register to the cluster successfully");
           return;

Reply via email to