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

xingtanzjr pushed a commit to branch test_partition_fail
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 2a85be2e5d463567fc7ed9d303857618c5fa9995
Author: Jinrui.Zhang <[email protected]>
AuthorDate: Fri Sep 23 20:12:34 2022 +0800

    Revert "[IOTDB-4481] Use time_partition_interval_for_routing in 
PartitionFetcher (#7407)"
    
    This reverts commit 6b04945052b09ef2561b8bb06ec7986105643596.
---
 .../resources/conf/iotdb-confignode.properties     |  2 +-
 .../confignode/conf/ConfigNodeDescriptor.java      |  3 +-
 .../iotdb/confignode/manager/ConfigManager.java    |  3 +-
 docs/UserGuide/Data-Concept/Time-Partition.md      | 12 +++----
 .../Reference/ConfigNode-Config-Manual.md          | 12 +++----
 docs/UserGuide/Reference/DataNode-Config-Manual.md | 30 ++++++++++++----
 docs/zh/UserGuide/Data-Concept/Time-Partition.md   | 16 ++++-----
 .../Reference/ConfigNode-Config-Manual.md          | 16 ++++-----
 .../UserGuide/Reference/DataNode-Config-Manual.md  | 12 +++----
 .../resources/conf/iotdb-datanode.properties       |  4 ---
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 22 ------------
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  8 +----
 .../apache/iotdb/db/engine/StorageEngineV2.java    | 36 +++++++++++++------
 .../iotdb/db/engine/load/AlignedChunkData.java     | 10 +++---
 .../iotdb/db/engine/load/NonAlignedChunkData.java  |  8 ++---
 .../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java  |  7 ++--
 .../plan/node/load/LoadSingleTsFileNode.java       | 25 +++++++------
 .../planner/plan/node/write/InsertRowNode.java     |  6 ++--
 .../planner/plan/node/write/InsertRowsNode.java    |  4 +--
 .../plan/node/write/InsertRowsOfOneDeviceNode.java |  4 +--
 .../planner/plan/node/write/InsertTabletNode.java  | 32 ++++++++---------
 .../crud/InsertMultiTabletsStatement.java          |  4 +--
 .../plan/statement/crud/InsertRowStatement.java    |  6 ++--
 .../crud/InsertRowsOfOneDeviceStatement.java       |  5 ++-
 .../plan/statement/crud/InsertRowsStatement.java   |  4 +--
 .../plan/statement/crud/InsertTabletStatement.java | 22 +++++-------
 .../apache/iotdb/db/utils/TimePartitionUtils.java  | 41 ----------------------
 .../distribution/DistributionPlannerBasicTest.java |  2 +-
 .../plan/node/write/WritePlanNodeSplitTest.java    | 27 +++++++-------
 29 files changed, 163 insertions(+), 220 deletions(-)

diff --git a/confignode/src/assembly/resources/conf/iotdb-confignode.properties 
b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
index 43f6f79f1f..c1c314eca6 100644
--- a/confignode/src/assembly/resources/conf/iotdb-confignode.properties
+++ b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
@@ -133,7 +133,7 @@ target_config_nodes=127.0.0.1:22277
 
 # Time partition interval in seconds, default is equal to one day
 # Datatype: long
-# time_partition_interval_for_routing=86400
+# time_partition_interval=86400
 
 
 # Default number of SchemaRegion replicas
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 c4e81b121f..a1092e8820 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
@@ -205,8 +205,7 @@ public class ConfigNodeDescriptor {
       conf.setTimePartitionInterval(
           Long.parseLong(
               properties.getProperty(
-                  "time_partition_interval_for_routing",
-                  String.valueOf(conf.getTimePartitionInterval()))));
+                  "time_partition_interval", 
String.valueOf(conf.getTimePartitionInterval()))));
 
       conf.setSchemaReplicationFactor(
           Integer.parseInt(
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index 8209c8701c..3c63947ebd 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -670,8 +670,7 @@ public class ConfigManager implements IManager {
       return errorStatus.setMessage(errorPrefix + "default_ttl" + errorSuffix);
     }
     if (req.getTimePartitionInterval() != conf.getTimePartitionInterval()) {
-      return errorStatus.setMessage(
-          errorPrefix + "time_partition_interval_for_routing" + errorSuffix);
+      return errorStatus.setMessage(errorPrefix + "time_partition_interval" + 
errorSuffix);
     }
     if (req.getSchemaReplicationFactor() != conf.getSchemaReplicationFactor()) 
{
       return errorStatus.setMessage(errorPrefix + "schema_replication_factor" 
+ errorSuffix);
diff --git a/docs/UserGuide/Data-Concept/Time-Partition.md 
b/docs/UserGuide/Data-Concept/Time-Partition.md
index aeb2ae39a6..55074c50a4 100644
--- a/docs/UserGuide/Data-Concept/Time-Partition.md
+++ b/docs/UserGuide/Data-Concept/Time-Partition.md
@@ -34,14 +34,14 @@ Time partition divides data according to time, and a time 
partition is used to s
 |Default| false |
 |Effective|Only allowed to be modified in first start up|
 
-* time\_partition\_interval\_for\_storage
+* partition\_interval
 
-|Name| time\_partition\_interval\_for\_storage                                 
                               |
-|:---:|:-------------------------------------------------------------------------------------------------------|
+|Name| partition\_interval |
+|:---:|:---|
 |Description| Time range for dividing storage group, time series data will be 
divided into groups by this time range |
-|Type| Int64                                                                   
                               |
-|Default| 86400                                                                
                                  |
-|Effective| Only allowed to be modified in first start up                      
                                    |
+|Type|Int64|
+|Default| 604800 |
+|Effective|Only allowed to be modified in first start up|
 
 ## Configuration example
 
diff --git a/docs/UserGuide/Reference/ConfigNode-Config-Manual.md 
b/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
index 61aec50a1a..b02fe6c7ca 100644
--- a/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
+++ b/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
@@ -244,14 +244,14 @@ The global configuration of cluster is in ConfigNode.
 |Default| Infinity |
 |Effective|After restarting system|
 
-* time\_partition\_interval\_for\_routing
+* time\_partition\_interval
 
-|Name| time\_partition\_interval\_for\_routing                       |
-|:---:|:--------------------------------------------------------------|
+|Name| time\_partition\_interval |
+|:---:|:---|
 |Description| Time partition interval of data when ConfigNode allocate data |
-|Type| Long                                                          |
-|Default| 86400                                                         |
-|Effective| Only allowed to be modified in first start up                 |
+|Type| Long |
+|Default| 604800 |
+|Effective|Only allowed to be modified in first start up|
 
 
 ### Data Directory
diff --git a/docs/UserGuide/Reference/DataNode-Config-Manual.md 
b/docs/UserGuide/Reference/DataNode-Config-Manual.md
index bdfe122316..3199ede743 100644
--- a/docs/UserGuide/Reference/DataNode-Config-Manual.md
+++ b/docs/UserGuide/Reference/DataNode-Config-Manual.md
@@ -541,14 +541,14 @@ The permission definitions are in 
${IOTDB\_CONF}/conf/jmx.access.
 |Default| false |
 |Effective|Only allowed to be modified in first start up|
 
-* time\_partition\_interval\_for\_storage
+* partition\_interval
 
-|Name| time\_partition\_interval\_for\_storage                                 
                               |
-|:---:|:-------------------------------------------------------------------------------------------------------|
+|Name| partition\_interval |
+|:---:|:---|
 |Description| Time range for dividing storage group, time series data will be 
divided into groups by this time range |
-|Type| Int64                                                                   
                               |
-|Default| 86400                                                                
                                  |
-|Effective| Only allowed to be modified in first start up                      
                                    |
+|Type|Int64|
+|Default| 604800 |
+|Effective|Only allowed to be modified in first start up|
 
 
 * concurrent\_writing\_time\_partition
@@ -1113,6 +1113,24 @@ The permission definitions are in 
${IOTDB\_CONF}/conf/jmx.access.
 |Default|FLOAT |
 |Effective|After restarting system|
 
+* enable\_partition
+
+|Name| enable\_partition |
+|:---:|:---|
+|Description| whether enable data partition. If disabled, all data belongs to 
partition 0|
+|Type| BOOLEAN |
+|Default|false |
+|Effective|Only allowed to be modified in first start up|
+
+* partition\_interval
+
+|Name| partition\_interval |
+|:---:|:---|
+|Description| time range for partitioning data inside each storage group, the 
unit is second|
+|Type| LONG |
+|Default| 604800 |
+|Effective|Only allowed to be modified in first start up|
+
 * data\_region\_num
 
 |    Name     | data\_region\_num                                              
                                                                                
                                                                                
                                    |
diff --git a/docs/zh/UserGuide/Data-Concept/Time-Partition.md 
b/docs/zh/UserGuide/Data-Concept/Time-Partition.md
index 4e2572c6d2..24fe59f5bf 100644
--- a/docs/zh/UserGuide/Data-Concept/Time-Partition.md
+++ b/docs/zh/UserGuide/Data-Concept/Time-Partition.md
@@ -34,14 +34,14 @@
 |默认值| false |
 |改后生效方式|仅允许在第一次启动服务前修改|
 
-* time\_partition\_interval\_for\_storage
-
-|名字| time\_partition\_interval\_for\_storage |
-|:---:|:----------------------------------------|
-|描述| 存储组分区的时间段长度,用户指定的存储组下会使用该时间段进行分区,单位:秒   |
-|类型| Int64                                   |
-|默认值| 86400                                   |
-|改后生效方式| 仅允许在第一次启动服务前修改                          |
+* partition\_interval
+
+|名字| partition\_interval |
+|:---:|:---|
+|描述| 存储组分区的时间段长度,用户指定的存储组下会使用该时间段进行分区,单位:秒 |
+|类型|Int64|
+|默认值| 604800 |
+|改后生效方式|仅允许在第一次启动服务前修改|
 
 ## 配置示例
 
diff --git a/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md 
b/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
index 45b1dbccbe..5c6aa96745 100644
--- a/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
@@ -239,14 +239,14 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。
 |默认值| 无限 |
 |改后生效方式|重启服务生效|
 
-* time\_partition\_interval\_for\_routing
-
-|名字| time\_partition\_interval\_for\_routing |
-|:---:|:----------------------------------------|
-|描述| 存储组默认的数据时间分区间隔                          |
-|类型| Long                                    |
-|默认值| 86400                                   |
-|改后生效方式| 仅允许在第一次启动服务前修改                          |
+* time\_partition\_interval
+
+|名字| time\_partition\_interval |
+|:---:|:---|
+|描述| 存储组默认的数据时间分区间隔 |
+|类型| Long |
+|默认值| 604800 |
+|改后生效方式|仅允许在第一次启动服务前修改|
 
 ### 数据目录
 
diff --git a/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md 
b/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
index 9c0b9e695d..7b03b9ef36 100644
--- a/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
@@ -1683,14 +1683,14 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB 
 |默认值| false |
 |改后生效方式|仅允许在第一次启动服务前修改|
 
-* time\_partition\_interval\_for\_storage
+* partition\_interval
 
-|名字| time\_partition\_interval\_for\_storage |
-|:---:|:----------------------------------------|
+|名字| partition\_interval |
+|:---:|:---|
 |描述| 用于存储组分区的时间段长度,用户指定的存储组下会使用该时间段进行分区,单位:秒 |
-|类型| Int64                                   |
-|默认值| 86400                                   |
-|改后生效方式| 仅允许在第一次启动服务前修改                          |
+|类型| Int64 |
+|默认值| 604800 |
+|改后生效方式|仅允许在第一次启动服务前修改|
 
 * data\_region\_num
 
diff --git a/server/src/assembly/resources/conf/iotdb-datanode.properties 
b/server/src/assembly/resources/conf/iotdb-datanode.properties
index 38d0e3d1e3..f4cf85d05c 100644
--- a/server/src/assembly/resources/conf/iotdb-datanode.properties
+++ b/server/src/assembly/resources/conf/iotdb-datanode.properties
@@ -1061,10 +1061,6 @@ timestamp_precision=ms
 # Datatype: long
 # partition_interval=86400
 
-# time range for partitioning data inside each data region, the unit is second
-# Datatype: long
-# time_partition_interval_for_storage=86400
-
 ####################
 ### Influx DB RPC Service Configuration
 ####################
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 50d69dc5aa..5513ff51c5 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
@@ -767,12 +767,6 @@ public class IoTDBConfig {
    */
   private long partitionInterval = 86400;
 
-  /** Time partition interval for storage in seconds */
-  private long timePartitionIntervalForStorage = 86400;
-
-  /** Time partition interval for routing in seconds */
-  private long timePartitionIntervalForRouting = 86400;
-
   /**
    * Level of TimeIndex, which records the start time and end time of 
TsFileResource. Currently,
    * DEVICE_TIME_INDEX and FILE_TIME_INDEX are supported, and could not be 
changed after first set.
@@ -1116,22 +1110,6 @@ public class IoTDBConfig {
     this.partitionInterval = partitionInterval;
   }
 
-  public long getTimePartitionIntervalForStorage() {
-    return timePartitionIntervalForStorage;
-  }
-
-  public void setTimePartitionIntervalForStorage(long 
timePartitionIntervalForStorage) {
-    this.timePartitionIntervalForStorage = timePartitionIntervalForStorage;
-  }
-
-  public long getTimePartitionIntervalForRouting() {
-    return timePartitionIntervalForRouting;
-  }
-
-  public void setTimePartitionIntervalForRouting(long 
timePartitionIntervalForRouting) {
-    this.timePartitionIntervalForRouting = timePartitionIntervalForRouting;
-  }
-
   public TimeIndexLevel getTimeIndexLevel() {
     return timeIndexLevel;
   }
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 57ed301e3b..2d0ac129d1 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
@@ -900,12 +900,6 @@ public class IoTDBDescriptor {
             properties.getProperty(
                 "partition_interval", 
String.valueOf(conf.getPartitionInterval()))));
 
-    conf.setTimePartitionIntervalForStorage(
-        Long.parseLong(
-            properties.getProperty(
-                "time_partition_interval_for_storage",
-                String.valueOf(conf.getTimePartitionIntervalForStorage()))));
-
     conf.setSelectIntoInsertTabletPlanRowLimit(
         Integer.parseInt(
             properties.getProperty(
@@ -1921,7 +1915,7 @@ public class IoTDBDescriptor {
   public void loadGlobalConfig(TGlobalConfig globalConfig) {
     
conf.setSeriesPartitionExecutorClass(globalConfig.getSeriesPartitionExecutorClass());
     conf.setSeriesPartitionSlotNum(globalConfig.getSeriesPartitionSlotNum());
-    
conf.setTimePartitionIntervalForRouting(globalConfig.timePartitionInterval);
+    conf.setPartitionInterval(globalConfig.timePartitionInterval);
     conf.setReadConsistencyLevel(globalConfig.getReadConsistencyLevel());
   }
 
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 807a3e59b8..b81665d4af 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
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.engine;
 import org.apache.iotdb.common.rpc.thrift.TFlushReq;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.common.rpc.thrift.TSetTTLReq;
+import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
 import org.apache.iotdb.commons.concurrent.ThreadName;
 import org.apache.iotdb.commons.concurrent.threadpool.ScheduledExecutorUtil;
@@ -100,7 +101,7 @@ public class StorageEngineV2 implements IService {
    * Time range for dividing storage group, the time unit is the same with 
IoTDB's
    * TimestampPrecision
    */
-  private static long timePartitionIntervalForStorage = -1;
+  @ServerConfigConsistent private static long timePartitionInterval = -1;
   /** whether enable data partition if disabled, all data belongs to partition 
0 */
   @ServerConfigConsistent private static boolean enablePartition = 
config.isEnablePartition();
 
@@ -146,9 +147,9 @@ public class StorageEngineV2 implements IService {
   }
 
   private static void initTimePartition() {
-    timePartitionIntervalForStorage =
+    timePartitionInterval =
         convertMilliWithPrecision(
-            
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForStorage() 
* 1000L);
+            IoTDBDescriptor.getInstance().getConfig().getPartitionInterval() * 
1000L);
   }
 
   public static long convertMilliWithPrecision(long milliTime) {
@@ -167,23 +168,23 @@ public class StorageEngineV2 implements IService {
     return result;
   }
 
-  public static long getTimePartitionIntervalForStorage() {
-    if (timePartitionIntervalForStorage == -1) {
+  public static long getTimePartitionInterval() {
+    if (timePartitionInterval == -1) {
       initTimePartition();
     }
-    return timePartitionIntervalForStorage;
+    return timePartitionInterval;
   }
 
   @TestOnly
-  public static void setTimePartitionIntervalForStorage(long 
timePartitionIntervalForStorage) {
-    StorageEngineV2.timePartitionIntervalForStorage = 
timePartitionIntervalForStorage;
+  public static void setTimePartitionInterval(long timePartitionInterval) {
+    StorageEngineV2.timePartitionInterval = timePartitionInterval;
   }
 
   public static long getTimePartition(long time) {
-    if (timePartitionIntervalForStorage == -1) {
+    if (timePartitionInterval == -1) {
       initTimePartition();
     }
-    return enablePartition ? time / timePartitionIntervalForStorage : 0;
+    return enablePartition ? time / timePartitionInterval : 0;
   }
 
   public static boolean isEnablePartition() {
@@ -215,6 +216,19 @@ 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);
+    }
+    return timePartitionSlot;
+  }
+
   public boolean isAllSgReady() {
     return isAllSgReady.get();
   }
@@ -323,7 +337,7 @@ public class StorageEngineV2 implements IService {
   public void start() {
     // build time Interval to divide time partition
     if (!enablePartition) {
-      timePartitionIntervalForStorage = Long.MAX_VALUE;
+      timePartitionInterval = Long.MAX_VALUE;
     } else {
       initTimePartition();
     }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/load/AlignedChunkData.java 
b/server/src/main/java/org/apache/iotdb/db/engine/load/AlignedChunkData.java
index 54f4885d41..7a2a3eb776 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/load/AlignedChunkData.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/load/AlignedChunkData.java
@@ -20,7 +20,7 @@
 package org.apache.iotdb.db.engine.load;
 
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
 import org.apache.iotdb.tsfile.exception.write.PageException;
@@ -270,8 +270,7 @@ public class AlignedChunkData implements ChunkData {
     for (int i = 0; i < decodeTime.length; i++) {
       if (decodeTime[i] < timePartitionSlot.getStartTime()) {
         continue;
-      } else if (!timePartitionSlot.equals(
-          TimePartitionUtils.getTimePartitionForRouting(decodeTime[i]))) {
+      } else if 
(!timePartitionSlot.equals(StorageEngineV2.getTimePartitionSlot(decodeTime[i])))
 {
         break;
       }
       time[satisfiedLength++] = decodeTime[i];
@@ -304,8 +303,7 @@ public class AlignedChunkData implements ChunkData {
     for (int i = 0; i < valueBatch.length; i++) {
       if (time[i] < timePartitionSlot.getStartTime()) {
         continue;
-      } else if (!timePartitionSlot.equals(
-          TimePartitionUtils.getTimePartitionForRouting(time[i]))) {
+      } else if 
(!timePartitionSlot.equals(StorageEngineV2.getTimePartitionSlot(time[i]))) {
         break;
       }
       if (valueBatch[i] == null) {
@@ -471,7 +469,7 @@ public class AlignedChunkData implements ChunkData {
     for (int i = 1; i < chunkHeaderListSize; i++) {
       chunkData.addValueChunk(-1, chunkHeaderList[i], null);
     }
-    
chunkData.setTimePartitionSlot(TimePartitionUtils.getTimePartitionForRouting(timePartition));
+    
chunkData.setTimePartitionSlot(StorageEngineV2.getTimePartitionSlot(timePartition));
     chunkData.deserializeTsFileData(stream);
     return chunkData;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/load/NonAlignedChunkData.java 
b/server/src/main/java/org/apache/iotdb/db/engine/load/NonAlignedChunkData.java
index ef3df5e769..5f0e9f0847 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/load/NonAlignedChunkData.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/load/NonAlignedChunkData.java
@@ -20,7 +20,7 @@
 package org.apache.iotdb.db.engine.load;
 
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
 import org.apache.iotdb.tsfile.exception.write.PageException;
@@ -213,7 +213,7 @@ public class NonAlignedChunkData implements ChunkData {
       if (time < timePartitionSlot.getStartTime()) {
         batchData.next();
         continue;
-      } else if 
(!timePartitionSlot.equals(TimePartitionUtils.getTimePartitionForRouting(time)))
 {
+      } else if 
(!timePartitionSlot.equals(StorageEngineV2.getTimePartitionSlot(time))) {
         break;
       }
       length += 1;
@@ -227,7 +227,7 @@ public class NonAlignedChunkData implements ChunkData {
       if (time < timePartitionSlot.getStartTime()) {
         batchData.next();
         continue;
-      } else if 
(!timePartitionSlot.equals(TimePartitionUtils.getTimePartitionForRouting(time)))
 {
+      } else if 
(!timePartitionSlot.equals(StorageEngineV2.getTimePartitionSlot(time))) {
         break;
       }
 
@@ -338,7 +338,7 @@ public class NonAlignedChunkData implements ChunkData {
     byte chunkType = ReadWriteIOUtils.readByte(stream);
     ChunkHeader chunkHeader = ChunkHeader.deserializeFrom(stream, chunkType);
     NonAlignedChunkData chunkData = new NonAlignedChunkData(-1, device, 
chunkHeader);
-    
chunkData.setTimePartitionSlot(TimePartitionUtils.getTimePartitionForRouting(timePartition));
+    
chunkData.setTimePartitionSlot(StorageEngineV2.getTimePartitionSlot(timePartition));
     chunkData.deserializeTsFileData(stream);
     return chunkData;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index bdccefb5b1..c0df8bc3cb 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.commons.partition.SchemaPartition;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.path.PathPatternTree;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
 import org.apache.iotdb.db.exception.LoadFileException;
@@ -104,7 +105,6 @@ import 
org.apache.iotdb.db.mpp.plan.statement.sys.ShowVersionStatement;
 import 
org.apache.iotdb.db.mpp.plan.statement.sys.sync.ShowPipeSinkTypeStatement;
 import org.apache.iotdb.db.query.control.SessionManager;
 import org.apache.iotdb.db.utils.FileLoaderUtils;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 import org.apache.iotdb.tsfile.file.header.ChunkHeader;
@@ -1502,11 +1502,10 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
       List<TTimePartitionSlot> timePartitionSlots = new ArrayList<>();
       String device = entry.getKey();
       long endTime = device2MaxTime.get(device);
-      long interval =
-          
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting();
+      long interval = StorageEngineV2.getTimePartitionInterval();
       long time = (entry.getValue() / interval) * interval;
       for (; time <= endTime; time += interval) {
-        
timePartitionSlots.add(TimePartitionUtils.getTimePartitionForRouting(time));
+        timePartitionSlots.add(StorageEngineV2.getTimePartitionSlot(time));
       }
 
       DataPartitionQueryParam dataPartitionQueryParam = new 
DataPartitionQueryParam();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/load/LoadSingleTsFileNode.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/load/LoadSingleTsFileNode.java
index fffe6cbc69..fd0ac00ebc 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/load/LoadSingleTsFileNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/load/LoadSingleTsFileNode.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.partition.DataPartition;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.engine.load.AlignedChunkData;
 import org.apache.iotdb.db.engine.load.ChunkData;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
@@ -32,7 +33,6 @@ import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
@@ -91,8 +91,8 @@ public class LoadSingleTsFileNode extends WritePlanNode {
     Set<TRegionReplicaSet> allRegionReplicaSet = new HashSet<>();
     needDecodeTsFile = false;
     for (String device : resource.getDevices()) {
-      if 
(!TimePartitionUtils.getTimePartitionForRouting(resource.getStartTime(device))
-          
.equals(TimePartitionUtils.getTimePartitionForRouting(resource.getEndTime(device))))
 {
+      if (!StorageEngineV2.getTimePartitionSlot(resource.getStartTime(device))
+          
.equals(StorageEngineV2.getTimePartitionSlot(resource.getEndTime(device)))) {
         needDecodeTsFile = true;
         return;
       }
@@ -229,7 +229,7 @@ public class LoadSingleTsFileNode extends WritePlanNode {
                     == TsFileConstant.TIME_COLUMN_MASK);
             IChunkMetadata chunkMetadata = 
offset2ChunkMetadata.get(chunkOffset - Byte.BYTES);
             TTimePartitionSlot timePartitionSlot =
-                
TimePartitionUtils.getTimePartitionForRouting(chunkMetadata.getStartTime());
+                
StorageEngineV2.getTimePartitionSlot(chunkMetadata.getStartTime());
             ChunkData chunkData =
                 ChunkData.createChunkData(isAligned, reader.position(), 
curDevice, header);
             chunkData.setTimePartitionSlot(timePartitionSlot);
@@ -273,7 +273,7 @@ public class LoadSingleTsFileNode extends WritePlanNode {
                         ? chunkMetadata.getStartTime()
                         : pageHeader.getStartTime();
                 TTimePartitionSlot pageTimePartitionSlot =
-                    TimePartitionUtils.getTimePartitionForRouting(startTime);
+                    StorageEngineV2.getTimePartitionSlot(startTime);
                 if (!timePartitionSlot.equals(pageTimePartitionSlot)) {
                   chunkDataList.add(chunkData);
                   timePartitionSlot = pageTimePartitionSlot;
@@ -295,8 +295,7 @@ public class LoadSingleTsFileNode extends WritePlanNode {
                 boolean isFirstData = true;
                 for (long currentTime : timeBatch) {
                   TTimePartitionSlot currentTimePartitionSlot =
-                      TimePartitionUtils.getTimePartitionForRouting(
-                          currentTime); // TODO: can speed up
+                      StorageEngineV2.getTimePartitionSlot(currentTime); // 
TODO: can speed up
                   if (!timePartitionSlot.equals(currentTimePartitionSlot)) {
                     if (!isFirstData) {
                       chunkData.setTailPageNeedDecode(true); // close last 
chunk data
@@ -427,17 +426,17 @@ public class LoadSingleTsFileNode extends WritePlanNode {
   }
 
   private boolean needDecodeChunk(IChunkMetadata chunkMetadata) {
-    return 
!TimePartitionUtils.getTimePartitionForRouting(chunkMetadata.getStartTime())
-        
.equals(TimePartitionUtils.getTimePartitionForRouting(chunkMetadata.getEndTime()));
+    return !StorageEngineV2.getTimePartitionSlot(chunkMetadata.getStartTime())
+        
.equals(StorageEngineV2.getTimePartitionSlot(chunkMetadata.getEndTime()));
   }
 
   private boolean needDecodePage(PageHeader pageHeader, IChunkMetadata 
chunkMetadata) {
     if (pageHeader.getStatistics() == null) {
-      return 
!TimePartitionUtils.getTimePartitionForRouting(chunkMetadata.getStartTime())
-          
.equals(TimePartitionUtils.getTimePartitionForRouting(chunkMetadata.getEndTime()));
+      return 
!StorageEngineV2.getTimePartitionSlot(chunkMetadata.getStartTime())
+          
.equals(StorageEngineV2.getTimePartitionSlot(chunkMetadata.getEndTime()));
     }
-    return 
!TimePartitionUtils.getTimePartitionForRouting(pageHeader.getStartTime())
-        
.equals(TimePartitionUtils.getTimePartitionForRouting(pageHeader.getEndTime()));
+    return !StorageEngineV2.getTimePartitionSlot(pageHeader.getStartTime())
+        .equals(StorageEngineV2.getTimePartitionSlot(pageHeader.getEndTime()));
   }
 
   private long[] decodePage(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
index d8e8c1030e..cd8d1f9550 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
@@ -24,6 +24,7 @@ import 
org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
@@ -35,7 +36,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.utils.CommonUtils;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.db.utils.TypeInferenceUtils;
 import org.apache.iotdb.db.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.wal.buffer.WALEntryValue;
@@ -95,7 +95,7 @@ public class InsertRowNode extends InsertNode implements 
WALEntryValue {
 
   @Override
   public List<WritePlanNode> splitByPartition(Analysis analysis) {
-    TTimePartitionSlot timePartitionSlot = 
TimePartitionUtils.getTimePartitionForRouting(time);
+    TTimePartitionSlot timePartitionSlot = 
StorageEngineV2.getTimePartitionSlot(time);
     this.dataRegionReplicaSet =
         analysis
             .getDataPartitionInfo()
@@ -174,7 +174,7 @@ public class InsertRowNode extends InsertNode implements 
WALEntryValue {
 
   @TestOnly
   public List<TTimePartitionSlot> getTimePartitionSlots() {
-    return 
Collections.singletonList(TimePartitionUtils.getTimePartitionForRouting(time));
+    return 
Collections.singletonList(StorageEngineV2.getTimePartitionSlot(time));
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsNode.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsNode.java
index 0ca29b9c75..a75b81e57c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsNode.java
@@ -22,6 +22,7 @@ import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.utils.StatusUtils;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
 import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
@@ -29,7 +30,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.exception.NotImplementedException;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
@@ -268,7 +268,7 @@ public class InsertRowsNode extends InsertNode implements 
BatchInsertNode {
               .getDataPartitionInfo()
               .getDataRegionReplicaSetForWriting(
                   insertRowNode.devicePath.getFullPath(),
-                  
TimePartitionUtils.getTimePartitionForRouting(insertRowNode.getTime()));
+                  
StorageEngineV2.getTimePartitionSlot(insertRowNode.getTime()));
       if (splitMap.containsKey(dataRegionReplicaSet)) {
         InsertRowsNode tmpNode = splitMap.get(dataRegionReplicaSet);
         tmpNode.addOneInsertRowNode(insertRowNode, i);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
index bb1f69d25c..6cd8a9cbd2 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.utils.StatusUtils;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
 import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
@@ -30,7 +31,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.exception.NotImplementedException;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
@@ -175,7 +175,7 @@ public class InsertRowsOfOneDeviceNode extends InsertNode 
implements BatchInsert
               .getDataPartitionInfo()
               .getDataRegionReplicaSetForWriting(
                   devicePath.getFullPath(),
-                  
TimePartitionUtils.getTimePartitionForRouting(insertRowNode.getTime()));
+                  
StorageEngineV2.getTimePartitionSlot(insertRowNode.getTime()));
       List<InsertRowNode> tmpMap =
           splitMap.computeIfAbsent(dataRegionReplicaSet, k -> new 
ArrayList<>());
       List<Integer> tmpIndexMap =
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
index 0b5742e7a2..86acccf1a1 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
@@ -23,8 +23,7 @@ import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.conf.ServerConfigConsistent;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
 import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
 import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
@@ -35,7 +34,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.utils.CommonUtils;
 import org.apache.iotdb.db.utils.QueryDataSetUtils;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.db.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.wal.buffer.WALEntryValue;
 import org.apache.iotdb.db.wal.utils.WALWriteUtils;
@@ -71,10 +69,6 @@ public class InsertTabletNode extends InsertNode implements 
WALEntryValue {
 
   private static final String DATATYPE_UNSUPPORTED = "Data type %s is not 
supported.";
 
-  @ServerConfigConsistent
-  private long timePartitionIntervalForRouting =
-      
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting();
-
   private long[] times; // times should be sorted. It is done in the session 
API.
 
   private BitMap[] bitMaps;
@@ -216,9 +210,10 @@ public class InsertTabletNode extends InsertNode 
implements WALEntryValue {
       return Collections.emptyList();
     }
     long startTime =
-        (times[0] / timePartitionIntervalForRouting) * 
timePartitionIntervalForRouting; // included
-    long endTime = startTime + timePartitionIntervalForRouting; // excluded
-    TTimePartitionSlot timePartitionSlot = 
TimePartitionUtils.getTimePartitionForRouting(times[0]);
+        (times[0] / StorageEngineV2.getTimePartitionInterval())
+            * StorageEngineV2.getTimePartitionInterval(); // included
+    long endTime = startTime + StorageEngineV2.getTimePartitionInterval(); // 
excluded
+    TTimePartitionSlot timePartitionSlot = 
StorageEngineV2.getTimePartitionSlot(times[0]);
     int startLoc = 0; // included
 
     List<TTimePartitionSlot> timePartitionSlots = new ArrayList<>();
@@ -234,8 +229,9 @@ public class InsertTabletNode extends InsertNode implements 
WALEntryValue {
         startLoc = i;
         startTime = endTime;
         endTime =
-            (times[i] / timePartitionIntervalForRouting + 1) * 
timePartitionIntervalForRouting;
-        timePartitionSlot = 
TimePartitionUtils.getTimePartitionForRouting(times[i]);
+            (times[i] / StorageEngineV2.getTimePartitionInterval() + 1)
+                * StorageEngineV2.getTimePartitionInterval();
+        timePartitionSlot = StorageEngineV2.getTimePartitionSlot(times[i]);
       }
     }
 
@@ -307,16 +303,18 @@ public class InsertTabletNode extends InsertNode 
implements WALEntryValue {
   public List<TTimePartitionSlot> getTimePartitionSlots() {
     List<TTimePartitionSlot> result = new ArrayList<>();
     long startTime =
-        (times[0] / timePartitionIntervalForRouting) * 
timePartitionIntervalForRouting; // included
-    long endTime = startTime + timePartitionIntervalForRouting; // excluded
-    TTimePartitionSlot timePartitionSlot = 
TimePartitionUtils.getTimePartitionForRouting(times[0]);
+        (times[0] / StorageEngineV2.getTimePartitionInterval())
+            * StorageEngineV2.getTimePartitionInterval(); // included
+    long endTime = startTime + StorageEngineV2.getTimePartitionInterval(); // 
excluded
+    TTimePartitionSlot timePartitionSlot = 
StorageEngineV2.getTimePartitionSlot(times[0]);
     for (int i = 1; i < times.length; i++) { // times are sorted in session 
API.
       if (times[i] >= endTime) {
         result.add(timePartitionSlot);
         // next init
         endTime =
-            (times[i] / timePartitionIntervalForRouting + 1) * 
timePartitionIntervalForRouting;
-        timePartitionSlot = 
TimePartitionUtils.getTimePartitionForRouting(times[i]);
+            (times[i] / StorageEngineV2.getTimePartitionInterval() + 1)
+                * StorageEngineV2.getTimePartitionInterval();
+        timePartitionSlot = StorageEngineV2.getTimePartitionSlot(times[i]);
       }
     }
     result.add(timePartitionSlot);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertMultiTabletsStatement.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertMultiTabletsStatement.java
index 545731e780..75eff705e0 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertMultiTabletsStatement.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertMultiTabletsStatement.java
@@ -23,9 +23,9 @@ import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.commons.partition.DataPartition;
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.mpp.plan.constant.StatementType;
 import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import java.util.ArrayList;
@@ -106,7 +106,7 @@ public class InsertMultiTabletsStatement extends 
InsertBaseStatement {
       TRegionReplicaSet regionReplicaSet =
           dataPartition.getDataRegionReplicaSetForWriting(
               insertTabletStatement.devicePath.getFullPath(),
-              TimePartitionUtils.getTimePartitionForRouting(
+              StorageEngineV2.getTimePartitionSlot(
                   
insertTabletStatement.getTimes()[insertTabletStatement.getTimes().length - 1]));
       
result.add(regionReplicaSet.getDataNodeLocations().get(0).getClientRpcEndPoint());
     }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowStatement.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowStatement.java
index ff43317e67..3972d0cf48 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowStatement.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowStatement.java
@@ -24,10 +24,10 @@ import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.partition.DataPartition;
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.mpp.plan.constant.StatementType;
 import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
@@ -127,14 +127,14 @@ public class InsertRowStatement extends 
InsertBaseStatement {
   }
 
   public List<TTimePartitionSlot> getTimePartitionSlots() {
-    return 
Collections.singletonList(TimePartitionUtils.getTimePartitionForRouting(time));
+    return 
Collections.singletonList(StorageEngineV2.getTimePartitionSlot(time));
   }
 
   @Override
   public List<TEndPoint> collectRedirectInfo(DataPartition dataPartition) {
     TRegionReplicaSet regionReplicaSet =
         dataPartition.getDataRegionReplicaSetForWriting(
-            devicePath.getFullPath(), 
TimePartitionUtils.getTimePartitionForRouting(time));
+            devicePath.getFullPath(), 
StorageEngineV2.getTimePartitionSlot(time));
     return Collections.singletonList(
         regionReplicaSet.getDataNodeLocations().get(0).getClientRpcEndPoint());
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsOfOneDeviceStatement.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsOfOneDeviceStatement.java
index f9bc18c066..a18c19db45 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsOfOneDeviceStatement.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsOfOneDeviceStatement.java
@@ -23,9 +23,9 @@ import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.partition.DataPartition;
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.mpp.plan.constant.StatementType;
 import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import java.util.ArrayList;
@@ -82,8 +82,7 @@ public class InsertRowsOfOneDeviceStatement extends 
InsertBaseStatement {
   public List<TTimePartitionSlot> getTimePartitionSlots() {
     Set<TTimePartitionSlot> timePartitionSlotSet = new HashSet<>();
     for (InsertRowStatement insertRowStatement : insertRowStatementList) {
-      timePartitionSlotSet.add(
-          
TimePartitionUtils.getTimePartitionForRouting(insertRowStatement.getTime()));
+      
timePartitionSlotSet.add(StorageEngineV2.getTimePartitionSlot(insertRowStatement.getTime()));
     }
     return new ArrayList<>(timePartitionSlotSet);
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsStatement.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsStatement.java
index 6c130f99d7..8314759daa 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsStatement.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsStatement.java
@@ -23,9 +23,9 @@ import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.commons.partition.DataPartition;
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.mpp.plan.constant.StatementType;
 import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import java.util.ArrayList;
@@ -106,7 +106,7 @@ public class InsertRowsStatement extends 
InsertBaseStatement {
       TRegionReplicaSet regionReplicaSet =
           dataPartition.getDataRegionReplicaSetForWriting(
               insertRowStatement.devicePath.getFullPath(),
-              
TimePartitionUtils.getTimePartitionForRouting(insertRowStatement.getTime()));
+              
StorageEngineV2.getTimePartitionSlot(insertRowStatement.getTime()));
       
result.add(regionReplicaSet.getDataNodeLocations().get(0).getClientRpcEndPoint());
     }
     return result;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertTabletStatement.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertTabletStatement.java
index e720790a1d..7621adf041 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertTabletStatement.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertTabletStatement.java
@@ -23,11 +23,9 @@ import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.partition.DataPartition;
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.conf.ServerConfigConsistent;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.mpp.plan.constant.StatementType;
 import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.utils.BitMap;
 
 import java.util.ArrayList;
@@ -36,10 +34,6 @@ import java.util.List;
 
 public class InsertTabletStatement extends InsertBaseStatement {
 
-  @ServerConfigConsistent
-  private long timePartitionIntervalForRouting =
-      
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting();
-
   private long[] times; // times should be sorted. It is done in the session 
API.
   private BitMap[] bitMaps;
   private Object[] columns;
@@ -95,16 +89,18 @@ public class InsertTabletStatement extends 
InsertBaseStatement {
   public List<TTimePartitionSlot> getTimePartitionSlots() {
     List<TTimePartitionSlot> result = new ArrayList<>();
     long startTime =
-        (times[0] / timePartitionIntervalForRouting) * 
timePartitionIntervalForRouting; // included
-    long endTime = startTime + timePartitionIntervalForRouting; // excluded
-    TTimePartitionSlot timePartitionSlot = 
TimePartitionUtils.getTimePartitionForRouting(times[0]);
+        (times[0] / StorageEngineV2.getTimePartitionInterval())
+            * StorageEngineV2.getTimePartitionInterval(); // included
+    long endTime = startTime + StorageEngineV2.getTimePartitionInterval(); // 
excluded
+    TTimePartitionSlot timePartitionSlot = 
StorageEngineV2.getTimePartitionSlot(times[0]);
     for (int i = 1; i < times.length; i++) { // times are sorted in session 
API.
       if (times[i] >= endTime) {
         result.add(timePartitionSlot);
         // next init
         endTime =
-            (times[i] / timePartitionIntervalForRouting + 1) * 
timePartitionIntervalForRouting;
-        timePartitionSlot = 
TimePartitionUtils.getTimePartitionForRouting(times[i]);
+            (times[i] / StorageEngineV2.getTimePartitionInterval() + 1)
+                * StorageEngineV2.getTimePartitionInterval();
+        timePartitionSlot = StorageEngineV2.getTimePartitionSlot(times[i]);
       }
     }
     result.add(timePartitionSlot);
@@ -116,7 +112,7 @@ public class InsertTabletStatement extends 
InsertBaseStatement {
     TRegionReplicaSet regionReplicaSet =
         dataPartition.getDataRegionReplicaSetForWriting(
             devicePath.getFullPath(),
-            TimePartitionUtils.getTimePartitionForRouting(times[times.length - 
1]));
+            StorageEngineV2.getTimePartitionSlot(times[times.length - 1]));
     return Collections.singletonList(
         regionReplicaSet.getDataNodeLocations().get(0).getClientRpcEndPoint());
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/utils/TimePartitionUtils.java 
b/server/src/main/java/org/apache/iotdb/db/utils/TimePartitionUtils.java
deleted file mode 100644
index b082e94cb2..0000000000
--- a/server/src/main/java/org/apache/iotdb/db/utils/TimePartitionUtils.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.utils;
-
-import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
-import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.conf.ServerConfigConsistent;
-
-public class TimePartitionUtils {
-  @ServerConfigConsistent
-  private static long timePartitionIntervalForRouting =
-      
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting();
-
-  public static TTimePartitionSlot getTimePartitionForRouting(long time) {
-    TTimePartitionSlot timePartitionSlot = new TTimePartitionSlot();
-    timePartitionSlot.setStartTime(time - time % 
timePartitionIntervalForRouting);
-    return timePartitionSlot;
-  }
-
-  @TestOnly
-  public static void setTimePartitionIntervalForRouting(long 
timePartitionIntervalForRouting) {
-    TimePartitionUtils.timePartitionIntervalForRouting = 
timePartitionIntervalForRouting;
-  }
-}
diff --git 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/distribution/DistributionPlannerBasicTest.java
 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/distribution/DistributionPlannerBasicTest.java
index 780a63ce08..8227fc49c1 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/distribution/DistributionPlannerBasicTest.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/distribution/DistributionPlannerBasicTest.java
@@ -353,7 +353,7 @@ public class DistributionPlannerBasicTest {
             false,
             new String[] {"s1"},
             new TSDataType[] {TSDataType.INT32},
-            10000L,
+            100000L,
             new Object[] {10},
             false);
     insertRowNode2.setMeasurementSchemas(
diff --git 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/write/WritePlanNodeSplitTest.java
 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/write/WritePlanNodeSplitTest.java
index fb8c77b181..c5a5466b2f 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/write/WritePlanNodeSplitTest.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/write/WritePlanNodeSplitTest.java
@@ -30,6 +30,7 @@ import 
org.apache.iotdb.commons.partition.DataPartitionQueryParam;
 import org.apache.iotdb.commons.partition.executor.SeriesPartitionExecutor;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.StorageEngineV2;
 import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.WritePlanNode;
@@ -37,7 +38,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertMultiTabletsNo
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertRowsNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import org.junit.After;
@@ -55,6 +55,8 @@ public class WritePlanNodeSplitTest {
 
   long prevTimePartitionInterval;
 
+  boolean prevEnableTimePartition;
+
   Map<String, Map<TSeriesPartitionSlot, Map<TTimePartitionSlot, 
List<TRegionReplicaSet>>>>
       dataPartitionMap;
 
@@ -68,10 +70,10 @@ public class WritePlanNodeSplitTest {
 
   @Before
   public void setUp() {
-    prevTimePartitionInterval =
-        
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting();
-    
IoTDBDescriptor.getInstance().getConfig().setTimePartitionIntervalForRouting(100);
-    TimePartitionUtils.setTimePartitionIntervalForRouting(100);
+    prevTimePartitionInterval = StorageEngineV2.getTimePartitionInterval();
+    prevEnableTimePartition = StorageEngineV2.isEnablePartition();
+    StorageEngineV2.setTimePartitionInterval(100);
+    StorageEngineV2.setEnablePartition(true);
 
     executorClassName = 
IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionExecutorClass();
     seriesSlotPartitionNum = 
IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionSlotNum();
@@ -93,8 +95,7 @@ public class WritePlanNodeSplitTest {
       Map<TTimePartitionSlot, List<TRegionReplicaSet>> timePartitionSlotMap = 
new HashMap<>();
       for (int t = 0; t < 5; t++) {
         timePartitionSlotMap.put(
-            new TTimePartitionSlot(
-                t * 
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting()),
+            new TTimePartitionSlot(t * 
StorageEngineV2.getTimePartitionInterval()),
             Collections.singletonList(
                 new TRegionReplicaSet(
                     new TConsensusGroupId(TConsensusGroupType.DataRegion, t), 
null)));
@@ -111,8 +112,7 @@ public class WritePlanNodeSplitTest {
       Map<TTimePartitionSlot, List<TRegionReplicaSet>> timePartitionSlotMap = 
new HashMap<>();
       for (int t = 0; t < 5; t++) {
         timePartitionSlotMap.put(
-            new TTimePartitionSlot(
-                t * 
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting()),
+            new TTimePartitionSlot(t * 
StorageEngineV2.getTimePartitionInterval()),
             Collections.singletonList(
                 new TRegionReplicaSet(
                     new TConsensusGroupId(TConsensusGroupType.DataRegion, 5), 
null)));
@@ -268,8 +268,7 @@ public class WritePlanNodeSplitTest {
     for (int i = 0; i < 5; i++) {
       InsertRowNode insertRowNode = new InsertRowNode(new PlanNodeId("plan 
node 3"));
       insertRowNode.setDevicePath(new 
PartialPath(String.format("root.sg1.d%d", i)));
-      insertRowNode.setTime(
-          i * 
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting());
+      insertRowNode.setTime(i * StorageEngineV2.getTimePartitionInterval());
       insertRowsNode.addOneInsertRowNode(insertRowNode, 2 * i);
 
       insertRowNode = new InsertRowNode(new PlanNodeId("plan node 3"));
@@ -297,9 +296,7 @@ public class WritePlanNodeSplitTest {
 
   @After
   public void tearDown() {
-    
TimePartitionUtils.setTimePartitionIntervalForRouting(prevTimePartitionInterval);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setTimePartitionIntervalForRouting(prevTimePartitionInterval);
+    StorageEngineV2.setTimePartitionInterval(prevTimePartitionInterval);
+    StorageEngineV2.setEnablePartition(prevEnableTimePartition);
   }
 }

Reply via email to