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;