You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/10/19 12:18:03 UTC
[iotdb] branch master updated: [IOTDB-4690] Add new configs for RatisConsensus (2.4.0)
This is an automated email from the ASF dual-hosted git repository.
jackietien 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 fd8ced4f07 [IOTDB-4690] Add new configs for RatisConsensus (2.4.0)
fd8ced4f07 is described below
commit fd8ced4f0714ae004eb16255dd24963f82ff682f
Author: William Song <48...@users.noreply.github.com>
AuthorDate: Wed Oct 19 20:17:57 2022 +0800
[IOTDB-4690] Add new configs for RatisConsensus (2.4.0)
---
.../resources/conf/iotdb-confignode.properties | 9 ++++
.../iotdb/confignode/conf/ConfigNodeConfig.java | 50 ++++++++++++++++++++
.../confignode/conf/ConfigNodeDescriptor.java | 30 ++++++++++++
.../iotdb/confignode/manager/ConsensusManager.java | 8 ++++
.../iotdb/confignode/manager/node/NodeManager.java | 6 +++
.../apache/iotdb/consensus/config/RatisConfig.java | 55 +++++++++++++++++++++-
.../iotdb/consensus/ratis/RatisConsensus.java | 2 -
.../org/apache/iotdb/consensus/ratis/Utils.java | 6 +++
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 38 +++++++++++++++
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 6 +++
.../db/consensus/DataRegionConsensusImpl.java | 10 ++++
.../db/consensus/SchemaRegionConsensusImpl.java | 10 ++++
.../src/main/thrift/confignode.thrift | 6 +++
13 files changed, 232 insertions(+), 4 deletions(-)
diff --git a/confignode/src/assembly/resources/conf/iotdb-confignode.properties b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
index ceaf44cb7c..22d1906a65 100644
--- a/confignode/src/assembly/resources/conf/iotdb-confignode.properties
+++ b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
@@ -392,6 +392,15 @@ target_config_nodes=127.0.0.1:22277
# data_region_ratis_initial_sleep_time_ms = 100
# data_region_ratis_max_sleep_time_ms = 10000
+# preserve certain logs when take snapshot and purge
+# partition_region_ratis_preserve_logs_num_when_purge = 1000
+# schema_region_ratis_preserve_logs_num_when_purge = 1000
+# data_region_ratis_preserve_logs_num_when_purge = 1000
+
+# first election timeout
+# ratis_first_election_timeout_min_ms = 50
+# ratis_first_election_timeout_max_ms = 150
+
####################
### Disk Monitor
####################
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
index 23cb095567..9ebb791180 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
@@ -208,6 +208,14 @@ public class ConfigNodeConfig {
private long schemaRegionRatisInitialSleepTimeMs = 100;
private long schemaRegionRatisMaxSleepTimeMs = 10000;
+ private long partitionRegionRatisPreserveLogsWhenPurge = 1000;
+ private long schemaRegionRatisPreserveLogsWhenPurge = 1000;
+ private long dataRegionRatisPreserveLogsWhenPurge = 1000;
+
+ /* first election timeout shares between 3 regions */
+ private long ratisFirstElectionTimeoutMinMs = 50;
+ private long ratisFirstElectionTimeoutMaxMs = 150;
+
public ConfigNodeConfig() {
// empty constructor
}
@@ -812,4 +820,46 @@ public class ConfigNodeConfig {
public void setSchemaRegionRatisMaxSleepTimeMs(long schemaRegionRatisMaxSleepTimeMs) {
this.schemaRegionRatisMaxSleepTimeMs = schemaRegionRatisMaxSleepTimeMs;
}
+
+ public long getPartitionRegionRatisPreserveLogsWhenPurge() {
+ return partitionRegionRatisPreserveLogsWhenPurge;
+ }
+
+ public void setPartitionRegionRatisPreserveLogsWhenPurge(
+ long partitionRegionRatisPreserveLogsWhenPurge) {
+ this.partitionRegionRatisPreserveLogsWhenPurge = partitionRegionRatisPreserveLogsWhenPurge;
+ }
+
+ public long getSchemaRegionRatisPreserveLogsWhenPurge() {
+ return schemaRegionRatisPreserveLogsWhenPurge;
+ }
+
+ public void setSchemaRegionRatisPreserveLogsWhenPurge(
+ long schemaRegionRatisPreserveLogsWhenPurge) {
+ this.schemaRegionRatisPreserveLogsWhenPurge = schemaRegionRatisPreserveLogsWhenPurge;
+ }
+
+ public long getDataRegionRatisPreserveLogsWhenPurge() {
+ return dataRegionRatisPreserveLogsWhenPurge;
+ }
+
+ public void setDataRegionRatisPreserveLogsWhenPurge(long dataRegionRatisPreserveLogsWhenPurge) {
+ this.dataRegionRatisPreserveLogsWhenPurge = dataRegionRatisPreserveLogsWhenPurge;
+ }
+
+ public long getRatisFirstElectionTimeoutMinMs() {
+ return ratisFirstElectionTimeoutMinMs;
+ }
+
+ public void setRatisFirstElectionTimeoutMinMs(long ratisFirstElectionTimeoutMinMs) {
+ this.ratisFirstElectionTimeoutMinMs = ratisFirstElectionTimeoutMinMs;
+ }
+
+ public long getRatisFirstElectionTimeoutMaxMs() {
+ return ratisFirstElectionTimeoutMaxMs;
+ }
+
+ public void setRatisFirstElectionTimeoutMaxMs(long ratisFirstElectionTimeoutMaxMs) {
+ this.ratisFirstElectionTimeoutMaxMs = ratisFirstElectionTimeoutMaxMs;
+ }
}
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 c5c7d913a4..f2a57d462a 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
@@ -473,6 +473,36 @@ public class ConfigNodeDescriptor {
properties.getProperty(
"schema_region_ratis_max_sleep_time_ms",
String.valueOf(conf.getSchemaRegionRatisMaxSleepTimeMs()))));
+
+ conf.setPartitionRegionRatisPreserveLogsWhenPurge(
+ Long.parseLong(
+ properties.getProperty(
+ "partition_region_ratis_preserve_logs_num_when_purge",
+ String.valueOf(conf.getPartitionRegionRatisPreserveLogsWhenPurge()))));
+
+ conf.setSchemaRegionRatisPreserveLogsWhenPurge(
+ Long.parseLong(
+ properties.getProperty(
+ "schema_region_ratis_preserve_logs_num_when_purge",
+ String.valueOf(conf.getSchemaRegionRatisPreserveLogsWhenPurge()))));
+
+ conf.setDataRegionRatisPreserveLogsWhenPurge(
+ Long.parseLong(
+ properties.getProperty(
+ "data_region_ratis_preserve_logs_num_when_purge",
+ String.valueOf(conf.getDataRegionRatisPreserveLogsWhenPurge()))));
+
+ conf.setRatisFirstElectionTimeoutMinMs(
+ Long.parseLong(
+ properties.getProperty(
+ "ratis_first_election_timeout_min_ms",
+ String.valueOf(conf.getRatisFirstElectionTimeoutMinMs()))));
+
+ conf.setRatisFirstElectionTimeoutMaxMs(
+ Long.parseLong(
+ properties.getProperty(
+ "ratis_first_election_timeout_max_ms",
+ String.valueOf(conf.getRatisFirstElectionTimeoutMaxMs()))));
}
/**
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConsensusManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConsensusManager.java
index 7b9979034a..bc266bd89e 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConsensusManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConsensusManager.java
@@ -129,6 +129,14 @@ public class ConsensusManager {
TimeDuration.valueOf(
CONF.getPartitionRegionRatisRequestTimeoutMs(),
TimeUnit.MILLISECONDS))
+ .setFirstElectionTimeoutMin(
+ TimeDuration.valueOf(
+ CONF.getRatisFirstElectionTimeoutMinMs(),
+ TimeUnit.MILLISECONDS))
+ .setFirstElectionTimeoutMax(
+ TimeDuration.valueOf(
+ CONF.getRatisFirstElectionTimeoutMaxMs(),
+ TimeUnit.MILLISECONDS))
.build())
.setRatisConsensus(
RatisConfig.RatisConsensus.newBuilder()
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
index 6b36fa8035..7162762a87 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
@@ -197,6 +197,12 @@ public class NodeManager {
ratisConfig.setSchemaInitialSleepTime(conf.getSchemaRegionRatisInitialSleepTimeMs());
ratisConfig.setSchemaMaxSleepTime(conf.getSchemaRegionRatisMaxSleepTimeMs());
+ ratisConfig.setSchemaPreserveWhenPurge(conf.getPartitionRegionRatisPreserveLogsWhenPurge());
+ ratisConfig.setDataPreserveWhenPurge(conf.getDataRegionRatisPreserveLogsWhenPurge());
+
+ ratisConfig.setFirstElectionTimeoutMin(conf.getRatisFirstElectionTimeoutMinMs());
+ ratisConfig.setFirstElectionTimeoutMax(conf.getRatisFirstElectionTimeoutMaxMs());
+
dataSet.setRatisConfig(ratisConfig);
}
diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/config/RatisConfig.java b/consensus/src/main/java/org/apache/iotdb/consensus/config/RatisConfig.java
index ef64563a4d..9677b82098 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/config/RatisConfig.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/config/RatisConfig.java
@@ -162,18 +162,24 @@ public class RatisConfig {
private final TimeDuration requestTimeout;
private final TimeDuration sleepTime;
private final TimeDuration slownessTimeout;
+ private final TimeDuration firstElectionTimeoutMin;
+ private final TimeDuration firstElectionTimeoutMax;
private Rpc(
TimeDuration timeoutMin,
TimeDuration timeoutMax,
TimeDuration requestTimeout,
TimeDuration sleepTime,
- TimeDuration slownessTimeout) {
+ TimeDuration slownessTimeout,
+ TimeDuration firstElectionTimeoutMin,
+ TimeDuration firstElectionTimeoutMax) {
this.timeoutMin = timeoutMin;
this.timeoutMax = timeoutMax;
this.requestTimeout = requestTimeout;
this.sleepTime = sleepTime;
this.slownessTimeout = slownessTimeout;
+ this.firstElectionTimeoutMin = firstElectionTimeoutMin;
+ this.firstElectionTimeoutMax = firstElectionTimeoutMax;
}
public TimeDuration getTimeoutMin() {
@@ -196,6 +202,14 @@ public class RatisConfig {
return slownessTimeout;
}
+ public TimeDuration getFirstElectionTimeoutMin() {
+ return firstElectionTimeoutMin;
+ }
+
+ public TimeDuration getFirstElectionTimeoutMax() {
+ return firstElectionTimeoutMax;
+ }
+
public static Rpc.Builder newBuilder() {
return new Rpc.Builder();
}
@@ -207,8 +221,21 @@ public class RatisConfig {
private TimeDuration sleepTime = TimeDuration.valueOf(1, TimeUnit.SECONDS);
private TimeDuration slownessTimeout = TimeDuration.valueOf(10, TimeUnit.MINUTES);
+ private TimeDuration firstElectionTimeoutMin =
+ TimeDuration.valueOf(50, TimeUnit.MILLISECONDS);
+
+ private TimeDuration firstElectionTimeoutMax =
+ TimeDuration.valueOf(150, TimeUnit.MILLISECONDS);
+
public Rpc build() {
- return new Rpc(timeoutMin, timeoutMax, requestTimeout, sleepTime, slownessTimeout);
+ return new Rpc(
+ timeoutMin,
+ timeoutMax,
+ requestTimeout,
+ sleepTime,
+ slownessTimeout,
+ firstElectionTimeoutMin,
+ firstElectionTimeoutMax);
}
public Rpc.Builder setTimeoutMin(TimeDuration timeoutMin) {
@@ -235,6 +262,16 @@ public class RatisConfig {
this.slownessTimeout = slownessTimeout;
return this;
}
+
+ public Rpc.Builder setFirstElectionTimeoutMax(TimeDuration firstElectionTimeoutMax) {
+ this.firstElectionTimeoutMax = firstElectionTimeoutMax;
+ return this;
+ }
+
+ public Rpc.Builder setFirstElectionTimeoutMin(TimeDuration firstElectionTimeoutMin) {
+ this.firstElectionTimeoutMin = firstElectionTimeoutMin;
+ return this;
+ }
}
}
@@ -454,6 +491,7 @@ public class RatisConfig {
private final SizeInBytes queueByteLimit;
private final int purgeGap;
private final boolean purgeUptoSnapshotIndex;
+ private final long preserveNumsWhenPurge;
private final SizeInBytes segmentSizeMax;
private final int segmentCacheNumMax;
private final SizeInBytes segmentCacheSizeMax;
@@ -468,6 +506,7 @@ public class RatisConfig {
SizeInBytes queueByteLimit,
int purgeGap,
boolean purgeUptoSnapshotIndex,
+ long preserveNumsWhenPurge,
SizeInBytes segmentSizeMax,
int segmentCacheNumMax,
SizeInBytes segmentCacheSizeMax,
@@ -480,6 +519,7 @@ public class RatisConfig {
this.queueByteLimit = queueByteLimit;
this.purgeGap = purgeGap;
this.purgeUptoSnapshotIndex = purgeUptoSnapshotIndex;
+ this.preserveNumsWhenPurge = preserveNumsWhenPurge;
this.segmentSizeMax = segmentSizeMax;
this.segmentCacheNumMax = segmentCacheNumMax;
this.segmentCacheSizeMax = segmentCacheSizeMax;
@@ -537,6 +577,10 @@ public class RatisConfig {
return unsafeFlushEnabled;
}
+ public long getPreserveNumsWhenPurge() {
+ return preserveNumsWhenPurge;
+ }
+
public static Log.Builder newBuilder() {
return new Log.Builder();
}
@@ -547,6 +591,7 @@ public class RatisConfig {
private SizeInBytes queueByteLimit = SizeInBytes.valueOf("64MB");
private int purgeGap = 1024;
private boolean purgeUptoSnapshotIndex = true;
+ private long preserveNumsWhenPurge = 1000;
private SizeInBytes segmentSizeMax = SizeInBytes.valueOf("24MB");
private int segmentCacheNumMax = 2;
private SizeInBytes segmentCacheSizeMax = SizeInBytes.valueOf("200MB");
@@ -562,6 +607,7 @@ public class RatisConfig {
queueByteLimit,
purgeGap,
purgeUptoSnapshotIndex,
+ preserveNumsWhenPurge,
segmentSizeMax,
segmentCacheNumMax,
segmentCacheSizeMax,
@@ -596,6 +642,11 @@ public class RatisConfig {
return this;
}
+ public Log.Builder setPreserveNumsWhenPurge(long preserveNumsWhenPurge) {
+ this.preserveNumsWhenPurge = preserveNumsWhenPurge;
+ return this;
+ }
+
public Log.Builder setSegmentSizeMax(SizeInBytes segmentSizeMax) {
this.segmentSizeMax = segmentSizeMax;
return this;
diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
index f8191cdbfc..76479cd74c 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
@@ -123,8 +123,6 @@ class RatisConsensus implements IConsensus {
Utils.fromNodeInfoAndPriorityToRaftPeer(
config.getThisNodeId(), config.getThisNodeEndPoint(), DEFAULT_PRIORITY);
- System.setProperty(
- "org.apache.ratis.thirdparty.io.netty.allocator.useCacheForAllThreads", "false");
RaftServerConfigKeys.setStorageDir(
properties, Collections.singletonList(new File(config.getStorageDir())));
GrpcConfigKeys.Server.setPort(properties, config.getThisNodeEndPoint().getPort());
diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/Utils.java b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/Utils.java
index f7d1cbb66a..455b763437 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/Utils.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/Utils.java
@@ -188,6 +188,10 @@ public class Utils {
RaftServerConfigKeys.Rpc.setTimeoutMin(properties, config.getRpc().getTimeoutMin());
RaftServerConfigKeys.Rpc.setTimeoutMax(properties, config.getRpc().getTimeoutMax());
RaftServerConfigKeys.Rpc.setSleepTime(properties, config.getRpc().getSleepTime());
+ RaftServerConfigKeys.Rpc.setFirstElectionTimeoutMin(
+ properties, config.getRpc().getFirstElectionTimeoutMin());
+ RaftServerConfigKeys.Rpc.setFirstElectionTimeoutMax(
+ properties, config.getRpc().getFirstElectionTimeoutMax());
RaftClientConfigKeys.Rpc.setRequestTimeout(properties, config.getRpc().getRequestTimeout());
RaftServerConfigKeys.LeaderElection.setLeaderStepDownWaitTime(
@@ -222,6 +226,8 @@ public class Utils {
RaftServerConfigKeys.Log.setPurgeGap(properties, config.getLog().getPurgeGap());
RaftServerConfigKeys.Log.setPurgeUptoSnapshotIndex(
properties, config.getLog().isPurgeUptoSnapshotIndex());
+ RaftServerConfigKeys.Log.setPurgePreservationLogNum(
+ properties, config.getLog().getPreserveNumsWhenPurge());
RaftServerConfigKeys.Log.setSegmentSizeMax(properties, config.getLog().getSegmentSizeMax());
RaftServerConfigKeys.Log.setSegmentCacheNumMax(
properties, config.getLog().getSegmentCacheNumMax());
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 5df7d0ef19..ac75d8512a 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
@@ -1051,6 +1051,12 @@ public class IoTDBConfig {
private long dataRatisConsensusMaxSleepTimeMs = 10000L;
private long schemaRatisConsensusMaxSleepTimeMs = 10000L;
+ private long dataRatisConsensusPreserveWhenPurge = 1000L;
+ private long schemaRatisConsensusPreserveWhenPurge = 1000L;
+
+ private long ratisFirstElectionTimeoutMinMs = 50L;
+ private long ratisFirstElectionTimeoutMaxMs = 150L;
+
IoTDBConfig() {}
public float getUdfMemoryBudgetInMB() {
@@ -3525,4 +3531,36 @@ public class IoTDBConfig {
public void setSchemaRatisConsensusMaxSleepTimeMs(long schemaRatisConsensusMaxSleepTimeMs) {
this.schemaRatisConsensusMaxSleepTimeMs = schemaRatisConsensusMaxSleepTimeMs;
}
+
+ public long getDataRatisConsensusPreserveWhenPurge() {
+ return dataRatisConsensusPreserveWhenPurge;
+ }
+
+ public void setDataRatisConsensusPreserveWhenPurge(long dataRatisConsensusPreserveWhenPurge) {
+ this.dataRatisConsensusPreserveWhenPurge = dataRatisConsensusPreserveWhenPurge;
+ }
+
+ public long getSchemaRatisConsensusPreserveWhenPurge() {
+ return schemaRatisConsensusPreserveWhenPurge;
+ }
+
+ public void setSchemaRatisConsensusPreserveWhenPurge(long schemaRatisConsensusPreserveWhenPurge) {
+ this.schemaRatisConsensusPreserveWhenPurge = schemaRatisConsensusPreserveWhenPurge;
+ }
+
+ public long getRatisFirstElectionTimeoutMinMs() {
+ return ratisFirstElectionTimeoutMinMs;
+ }
+
+ public void setRatisFirstElectionTimeoutMinMs(long ratisFirstElectionTimeoutMinMs) {
+ this.ratisFirstElectionTimeoutMinMs = ratisFirstElectionTimeoutMinMs;
+ }
+
+ public long getRatisFirstElectionTimeoutMaxMs() {
+ return ratisFirstElectionTimeoutMaxMs;
+ }
+
+ public void setRatisFirstElectionTimeoutMaxMs(long ratisFirstElectionTimeoutMaxMs) {
+ this.ratisFirstElectionTimeoutMaxMs = ratisFirstElectionTimeoutMaxMs;
+ }
}
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 2fc236ebfb..c17ea193c3 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
@@ -1974,6 +1974,12 @@ public class IoTDBDescriptor {
conf.setSchemaRatisConsensusMaxRetryAttempts(ratisConfig.getSchemaMaxRetryAttempts());
conf.setSchemaRatisConsensusInitialSleepTimeMs(ratisConfig.getSchemaInitialSleepTime());
conf.setSchemaRatisConsensusMaxSleepTimeMs(ratisConfig.getSchemaMaxSleepTime());
+
+ conf.setDataRatisConsensusPreserveWhenPurge(ratisConfig.getDataPreserveWhenPurge());
+ conf.setSchemaRatisConsensusPreserveWhenPurge(ratisConfig.getSchemaPreserveWhenPurge());
+
+ conf.setRatisFirstElectionTimeoutMinMs(ratisConfig.getFirstElectionTimeoutMin());
+ conf.setRatisFirstElectionTimeoutMaxMs(ratisConfig.getFirstElectionTimeoutMax());
}
public void reclaimConsensusMemory() {
diff --git a/server/src/main/java/org/apache/iotdb/db/consensus/DataRegionConsensusImpl.java b/server/src/main/java/org/apache/iotdb/db/consensus/DataRegionConsensusImpl.java
index a4005c9081..1364c5ccd6 100644
--- a/server/src/main/java/org/apache/iotdb/db/consensus/DataRegionConsensusImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/consensus/DataRegionConsensusImpl.java
@@ -108,6 +108,8 @@ public class DataRegionConsensusImpl {
.setSegmentSizeMax(
SizeInBytes.valueOf(
conf.getDataRatisConsensusLogSegmentSizeMax()))
+ .setPreserveNumsWhenPurge(
+ conf.getDataRatisConsensusPreserveWhenPurge())
.build())
.setGrpc(
RatisConfig.Grpc.newBuilder()
@@ -131,6 +133,14 @@ public class DataRegionConsensusImpl {
TimeDuration.valueOf(
conf.getDataRatisConsensusRequestTimeoutMs(),
TimeUnit.MILLISECONDS))
+ .setFirstElectionTimeoutMin(
+ TimeDuration.valueOf(
+ conf.getRatisFirstElectionTimeoutMinMs(),
+ TimeUnit.MILLISECONDS))
+ .setFirstElectionTimeoutMax(
+ TimeDuration.valueOf(
+ conf.getRatisFirstElectionTimeoutMaxMs(),
+ TimeUnit.MILLISECONDS))
.build())
.setLeaderLogAppender(
RatisConfig.LeaderLogAppender.newBuilder()
diff --git a/server/src/main/java/org/apache/iotdb/db/consensus/SchemaRegionConsensusImpl.java b/server/src/main/java/org/apache/iotdb/db/consensus/SchemaRegionConsensusImpl.java
index 14703a6e72..59e9b066d3 100644
--- a/server/src/main/java/org/apache/iotdb/db/consensus/SchemaRegionConsensusImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/consensus/SchemaRegionConsensusImpl.java
@@ -76,6 +76,8 @@ public class SchemaRegionConsensusImpl {
.setSegmentSizeMax(
SizeInBytes.valueOf(
conf.getSchemaRatisConsensusLogSegmentSizeMax()))
+ .setPreserveNumsWhenPurge(
+ conf.getSchemaRatisConsensusPreserveWhenPurge())
.build())
.setGrpc(
RatisConfig.Grpc.newBuilder()
@@ -99,6 +101,14 @@ public class SchemaRegionConsensusImpl {
TimeDuration.valueOf(
conf.getSchemaRatisConsensusRequestTimeoutMs(),
TimeUnit.MILLISECONDS))
+ .setFirstElectionTimeoutMin(
+ TimeDuration.valueOf(
+ conf.getRatisFirstElectionTimeoutMinMs(),
+ TimeUnit.MILLISECONDS))
+ .setFirstElectionTimeoutMax(
+ TimeDuration.valueOf(
+ conf.getRatisFirstElectionTimeoutMaxMs(),
+ TimeUnit.MILLISECONDS))
.build())
.setLeaderLogAppender(
RatisConfig.LeaderLogAppender.newBuilder()
diff --git a/thrift-confignode/src/main/thrift/confignode.thrift b/thrift-confignode/src/main/thrift/confignode.thrift
index 6c87d06b5f..21591ddcab 100644
--- a/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/thrift-confignode/src/main/thrift/confignode.thrift
@@ -80,6 +80,12 @@ struct TRatisConfig {
20: required i64 dataInitialSleepTime
21: required i64 schemaMaxSleepTime
22: required i64 dataMaxSleepTime
+
+ 23: required i64 schemaPreserveWhenPurge
+ 24: required i64 dataPreserveWhenPurge
+
+ 25: required i64 firstElectionTimeoutMin
+ 26: required i64 firstElectionTimeoutMax
}
struct TDataNodeRemoveReq {