You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ca...@apache.org on 2022/10/26 04:38:21 UTC

[iotdb] branch beyyes/confignode_standalone updated (531f8b3533 -> 8bedde9898)

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

caogaofei pushed a change to branch beyyes/confignode_standalone
in repository https://gitbox.apache.org/repos/asf/iotdb.git


    from 531f8b3533 [IOTDB-4732] Optimize client borrow logic in ClusterIT environment (#7713)
     new 23399bd08b add confignode standaloe for ConsensusManager
     new 8bedde9898 add confignode standaloe for ConsensusManager

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../iotdb/confignode/conf/ConfigNodeConfig.java    |  10 ++
 .../confignode/conf/ConfigNodeDescriptor.java      |   6 +
 .../iotdb/confignode/manager/ConsensusManager.java | 180 ++++++++++++---------
 3 files changed, 116 insertions(+), 80 deletions(-)


[iotdb] 01/02: add confignode standaloe for ConsensusManager

Posted by ca...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

caogaofei pushed a commit to branch beyyes/confignode_standalone
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 23399bd08b2d367924fa5d776deb0b076952f97b
Author: Beyyes <cg...@foxmail.com>
AuthorDate: Wed Oct 26 12:37:26 2022 +0800

    add confignode standaloe for ConsensusManager
---
 .../iotdb/confignode/conf/ConfigNodeConfig.java    |  10 ++
 .../confignode/conf/ConfigNodeDescriptor.java      |   6 +
 .../iotdb/confignode/manager/ConsensusManager.java | 179 ++++++++++++---------
 3 files changed, 115 insertions(+), 80 deletions(-)

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 9ebb791180..0140966019 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
@@ -169,6 +169,7 @@ public class ConfigNodeConfig {
 
   private long partitionRegionRatisLogSegmentSizeMax = 24 * 1024 * 1024L;
   private long schemaRegionRatisLogSegmentSizeMax = 24 * 1024 * 1024L;
+  private long partitionRegionStandAloneLogSegmentSizeMax = 24 * 1024 * 1024L;
 
   /** RatisConsensus protocol, flow control window for ratis grpc log appender */
   private long dataRegionRatisGrpcFlowControlWindow = 4 * 1024 * 1024L;
@@ -695,6 +696,15 @@ public class ConfigNodeConfig {
     this.schemaRegionRatisLogSegmentSizeMax = schemaRegionRatisLogSegmentSizeMax;
   }
 
+  public long getPartitionRegionStandAloneLogSegmentSizeMax() {
+    return partitionRegionStandAloneLogSegmentSizeMax;
+  }
+
+  public void setPartitionRegionStandAloneLogSegmentSizeMax(
+          long partitionRegionStandAloneLogSegmentSizeMax) {
+    this.partitionRegionStandAloneLogSegmentSizeMax = partitionRegionStandAloneLogSegmentSizeMax;
+  }
+
   public long getSchemaRegionRatisGrpcFlowControlWindow() {
     return schemaRegionRatisGrpcFlowControlWindow;
   }
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 d3aa2a66cd..ed4142ce97 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
@@ -356,6 +356,12 @@ public class ConfigNodeDescriptor {
                 "schema_region_ratis_log_segment_size_max",
                 String.valueOf(conf.getSchemaRegionRatisLogSegmentSizeMax()))));
 
+    conf.setPartitionRegionStandAloneLogSegmentSizeMax(
+            Long.parseLong(
+                    properties.getProperty(
+                            "partition_region_standalone_log_segment_size_max",
+                            String.valueOf(conf.getPartitionRegionStandAloneLogSegmentSizeMax()))));
+
     conf.setDataRegionRatisGrpcFlowControlWindow(
         Long.parseLong(
             properties.getProperty(
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 bc266bd89e..0e7c9f9bf5 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
@@ -79,86 +79,105 @@ public class ConsensusManager {
     // There is only one ConfigNodeGroup
     consensusGroupId = new PartitionRegionId(CONF.getPartitionRegionId());
 
-    // Implement local ConsensusLayer by ConfigNodeConfig
-    consensusImpl =
-        ConsensusFactory.getConsensusImpl(
-                CONF.getConfigNodeConsensusProtocolClass(),
-                ConsensusConfig.newBuilder()
-                    .setThisNodeId(CONF.getConfigNodeId())
-                    .setThisNode(new TEndPoint(CONF.getInternalAddress(), CONF.getConsensusPort()))
-                    .setRatisConfig(
-                        RatisConfig.newBuilder()
-                            .setLeaderLogAppender(
-                                RatisConfig.LeaderLogAppender.newBuilder()
-                                    .setBufferByteLimit(
-                                        CONF
-                                            .getPartitionRegionRatisConsensusLogAppenderBufferSize())
-                                    .build())
-                            .setSnapshot(
-                                RatisConfig.Snapshot.newBuilder()
-                                    .setAutoTriggerThreshold(
-                                        CONF.getPartitionRegionRatisSnapshotTriggerThreshold())
-                                    .build())
-                            .setLog(
-                                RatisConfig.Log.newBuilder()
-                                    .setUnsafeFlushEnabled(
-                                        CONF.isPartitionRegionRatisLogUnsafeFlushEnable())
-                                    .setSegmentCacheSizeMax(
-                                        SizeInBytes.valueOf(
-                                            CONF.getPartitionRegionRatisLogSegmentSizeMax()))
-                                    .build())
-                            .setGrpc(
-                                RatisConfig.Grpc.newBuilder()
-                                    .setFlowControlWindow(
-                                        SizeInBytes.valueOf(
-                                            CONF.getPartitionRegionRatisGrpcFlowControlWindow()))
-                                    .build())
-                            .setRpc(
-                                RatisConfig.Rpc.newBuilder()
-                                    .setTimeoutMin(
-                                        TimeDuration.valueOf(
-                                            CONF
-                                                .getPartitionRegionRatisRpcLeaderElectionTimeoutMinMs(),
-                                            TimeUnit.MILLISECONDS))
-                                    .setTimeoutMax(
-                                        TimeDuration.valueOf(
-                                            CONF
-                                                .getPartitionRegionRatisRpcLeaderElectionTimeoutMaxMs(),
-                                            TimeUnit.MILLISECONDS))
-                                    .setRequestTimeout(
-                                        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()
-                                    .setClientRequestTimeoutMillis(
-                                        CONF.getPartitionRegionRatisRequestTimeoutMs())
-                                    .setClientMaxRetryAttempt(
-                                        CONF.getPartitionRegionRatisMaxRetryAttempts())
-                                    .setClientRetryInitialSleepTimeMs(
-                                        CONF.getPartitionRegionRatisInitialSleepTimeMs())
-                                    .setClientRetryMaxSleepTimeMs(
-                                        CONF.getPartitionRegionRatisMaxSleepTimeMs())
-                                    .build())
-                            .build())
-                    .setStorageDir(CONF.getConsensusDir())
-                    .build(),
-                gid -> stateMachine)
-            .orElseThrow(
-                () ->
-                    new IllegalArgumentException(
-                        String.format(
-                            ConsensusFactory.CONSTRUCT_FAILED_MSG,
-                            CONF.getConfigNodeConsensusProtocolClass())));
+    if (ConsensusFactory.StandAloneConsensus.equals(CONF.getConfigNodeConsensusProtocolClass())) {
+      consensusImpl =
+              ConsensusFactory.getConsensusImpl(
+                              ConsensusFactory.StandAloneConsensus,
+                              ConsensusConfig.newBuilder()
+                                      .setThisNode(
+                                              new TEndPoint(CONF.getInternalAddress(), CONF.getConsensusPort()))
+                                      .setStorageDir("target" + java.io.File.separator + "standalone")
+                                      .build(),
+                              gid -> stateMachine)
+                      .orElseThrow(
+                              () ->
+                                      new IllegalArgumentException(
+                                              String.format(
+                                                      ConsensusFactory.CONSTRUCT_FAILED_MSG,
+                                                      ConsensusFactory.StandAloneConsensus)));
+    } else {
+
+      // Implement local ConsensusLayer by ConfigNodeConfig
+      consensusImpl =
+              ConsensusFactory.getConsensusImpl(
+                              CONF.getConfigNodeConsensusProtocolClass(),
+                              ConsensusConfig.newBuilder()
+                                      .setThisNodeId(CONF.getConfigNodeId())
+                                      .setThisNode(new TEndPoint(CONF.getInternalAddress(), CONF.getConsensusPort()))
+                                      .setRatisConfig(
+                                              RatisConfig.newBuilder()
+                                                      .setLeaderLogAppender(
+                                                              RatisConfig.LeaderLogAppender.newBuilder()
+                                                                      .setBufferByteLimit(
+                                                                              CONF
+                                                                                      .getPartitionRegionRatisConsensusLogAppenderBufferSize())
+                                                                      .build())
+                                                      .setSnapshot(
+                                                              RatisConfig.Snapshot.newBuilder()
+                                                                      .setAutoTriggerThreshold(
+                                                                              CONF.getPartitionRegionRatisSnapshotTriggerThreshold())
+                                                                      .build())
+                                                      .setLog(
+                                                              RatisConfig.Log.newBuilder()
+                                                                      .setUnsafeFlushEnabled(
+                                                                              CONF.isPartitionRegionRatisLogUnsafeFlushEnable())
+                                                                      .setSegmentCacheSizeMax(
+                                                                              SizeInBytes.valueOf(
+                                                                                      CONF.getPartitionRegionRatisLogSegmentSizeMax()))
+                                                                      .build())
+                                                      .setGrpc(
+                                                              RatisConfig.Grpc.newBuilder()
+                                                                      .setFlowControlWindow(
+                                                                              SizeInBytes.valueOf(
+                                                                                      CONF.getPartitionRegionRatisGrpcFlowControlWindow()))
+                                                                      .build())
+                                                      .setRpc(
+                                                              RatisConfig.Rpc.newBuilder()
+                                                                      .setTimeoutMin(
+                                                                              TimeDuration.valueOf(
+                                                                                      CONF
+                                                                                              .getPartitionRegionRatisRpcLeaderElectionTimeoutMinMs(),
+                                                                                      TimeUnit.MILLISECONDS))
+                                                                      .setTimeoutMax(
+                                                                              TimeDuration.valueOf(
+                                                                                      CONF
+                                                                                              .getPartitionRegionRatisRpcLeaderElectionTimeoutMaxMs(),
+                                                                                      TimeUnit.MILLISECONDS))
+                                                                      .setRequestTimeout(
+                                                                              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()
+                                                                      .setClientRequestTimeoutMillis(
+                                                                              CONF.getPartitionRegionRatisRequestTimeoutMs())
+                                                                      .setClientMaxRetryAttempt(
+                                                                              CONF.getPartitionRegionRatisMaxRetryAttempts())
+                                                                      .setClientRetryInitialSleepTimeMs(
+                                                                              CONF.getPartitionRegionRatisInitialSleepTimeMs())
+                                                                      .setClientRetryMaxSleepTimeMs(
+                                                                              CONF.getPartitionRegionRatisMaxSleepTimeMs())
+                                                                      .build())
+                                                      .build())
+                                      .setStorageDir(CONF.getConsensusDir())
+                                      .build(),
+                              gid -> stateMachine)
+                      .orElseThrow(
+                              () ->
+                                      new IllegalArgumentException(
+                                              String.format(
+                                                      ConsensusFactory.CONSTRUCT_FAILED_MSG,
+                                                      CONF.getConfigNodeConsensusProtocolClass())));
+    }
     consensusImpl.start();
 
     if (SystemPropertiesUtils.isRestarted()) {


[iotdb] 02/02: add confignode standaloe for ConsensusManager

Posted by ca...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

caogaofei pushed a commit to branch beyyes/confignode_standalone
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 8bedde98988a707d8a52a47492d1685b596bc977
Author: Beyyes <cg...@foxmail.com>
AuthorDate: Wed Oct 26 12:38:06 2022 +0800

    add confignode standaloe for ConsensusManager
---
 .../iotdb/confignode/conf/ConfigNodeConfig.java    |   2 +-
 .../confignode/conf/ConfigNodeDescriptor.java      |   8 +-
 .../iotdb/confignode/manager/ConsensusManager.java | 185 +++++++++++----------
 3 files changed, 98 insertions(+), 97 deletions(-)

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 0140966019..18c09b2e74 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
@@ -701,7 +701,7 @@ public class ConfigNodeConfig {
   }
 
   public void setPartitionRegionStandAloneLogSegmentSizeMax(
-          long partitionRegionStandAloneLogSegmentSizeMax) {
+      long partitionRegionStandAloneLogSegmentSizeMax) {
     this.partitionRegionStandAloneLogSegmentSizeMax = partitionRegionStandAloneLogSegmentSizeMax;
   }
 
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 ed4142ce97..039774db19 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
@@ -357,10 +357,10 @@ public class ConfigNodeDescriptor {
                 String.valueOf(conf.getSchemaRegionRatisLogSegmentSizeMax()))));
 
     conf.setPartitionRegionStandAloneLogSegmentSizeMax(
-            Long.parseLong(
-                    properties.getProperty(
-                            "partition_region_standalone_log_segment_size_max",
-                            String.valueOf(conf.getPartitionRegionStandAloneLogSegmentSizeMax()))));
+        Long.parseLong(
+            properties.getProperty(
+                "partition_region_standalone_log_segment_size_max",
+                String.valueOf(conf.getPartitionRegionStandAloneLogSegmentSizeMax()))));
 
     conf.setDataRegionRatisGrpcFlowControlWindow(
         Long.parseLong(
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 0e7c9f9bf5..bd28a45680 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
@@ -81,102 +81,103 @@ public class ConsensusManager {
 
     if (ConsensusFactory.StandAloneConsensus.equals(CONF.getConfigNodeConsensusProtocolClass())) {
       consensusImpl =
-              ConsensusFactory.getConsensusImpl(
-                              ConsensusFactory.StandAloneConsensus,
-                              ConsensusConfig.newBuilder()
-                                      .setThisNode(
-                                              new TEndPoint(CONF.getInternalAddress(), CONF.getConsensusPort()))
-                                      .setStorageDir("target" + java.io.File.separator + "standalone")
-                                      .build(),
-                              gid -> stateMachine)
-                      .orElseThrow(
-                              () ->
-                                      new IllegalArgumentException(
-                                              String.format(
-                                                      ConsensusFactory.CONSTRUCT_FAILED_MSG,
-                                                      ConsensusFactory.StandAloneConsensus)));
+          ConsensusFactory.getConsensusImpl(
+                  ConsensusFactory.StandAloneConsensus,
+                  ConsensusConfig.newBuilder()
+                      .setThisNode(
+                          new TEndPoint(CONF.getInternalAddress(), CONF.getConsensusPort()))
+                      .setStorageDir("target" + java.io.File.separator + "standalone")
+                      .build(),
+                  gid -> stateMachine)
+              .orElseThrow(
+                  () ->
+                      new IllegalArgumentException(
+                          String.format(
+                              ConsensusFactory.CONSTRUCT_FAILED_MSG,
+                              ConsensusFactory.StandAloneConsensus)));
     } else {
 
       // Implement local ConsensusLayer by ConfigNodeConfig
       consensusImpl =
-              ConsensusFactory.getConsensusImpl(
-                              CONF.getConfigNodeConsensusProtocolClass(),
-                              ConsensusConfig.newBuilder()
-                                      .setThisNodeId(CONF.getConfigNodeId())
-                                      .setThisNode(new TEndPoint(CONF.getInternalAddress(), CONF.getConsensusPort()))
-                                      .setRatisConfig(
-                                              RatisConfig.newBuilder()
-                                                      .setLeaderLogAppender(
-                                                              RatisConfig.LeaderLogAppender.newBuilder()
-                                                                      .setBufferByteLimit(
-                                                                              CONF
-                                                                                      .getPartitionRegionRatisConsensusLogAppenderBufferSize())
-                                                                      .build())
-                                                      .setSnapshot(
-                                                              RatisConfig.Snapshot.newBuilder()
-                                                                      .setAutoTriggerThreshold(
-                                                                              CONF.getPartitionRegionRatisSnapshotTriggerThreshold())
-                                                                      .build())
-                                                      .setLog(
-                                                              RatisConfig.Log.newBuilder()
-                                                                      .setUnsafeFlushEnabled(
-                                                                              CONF.isPartitionRegionRatisLogUnsafeFlushEnable())
-                                                                      .setSegmentCacheSizeMax(
-                                                                              SizeInBytes.valueOf(
-                                                                                      CONF.getPartitionRegionRatisLogSegmentSizeMax()))
-                                                                      .build())
-                                                      .setGrpc(
-                                                              RatisConfig.Grpc.newBuilder()
-                                                                      .setFlowControlWindow(
-                                                                              SizeInBytes.valueOf(
-                                                                                      CONF.getPartitionRegionRatisGrpcFlowControlWindow()))
-                                                                      .build())
-                                                      .setRpc(
-                                                              RatisConfig.Rpc.newBuilder()
-                                                                      .setTimeoutMin(
-                                                                              TimeDuration.valueOf(
-                                                                                      CONF
-                                                                                              .getPartitionRegionRatisRpcLeaderElectionTimeoutMinMs(),
-                                                                                      TimeUnit.MILLISECONDS))
-                                                                      .setTimeoutMax(
-                                                                              TimeDuration.valueOf(
-                                                                                      CONF
-                                                                                              .getPartitionRegionRatisRpcLeaderElectionTimeoutMaxMs(),
-                                                                                      TimeUnit.MILLISECONDS))
-                                                                      .setRequestTimeout(
-                                                                              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()
-                                                                      .setClientRequestTimeoutMillis(
-                                                                              CONF.getPartitionRegionRatisRequestTimeoutMs())
-                                                                      .setClientMaxRetryAttempt(
-                                                                              CONF.getPartitionRegionRatisMaxRetryAttempts())
-                                                                      .setClientRetryInitialSleepTimeMs(
-                                                                              CONF.getPartitionRegionRatisInitialSleepTimeMs())
-                                                                      .setClientRetryMaxSleepTimeMs(
-                                                                              CONF.getPartitionRegionRatisMaxSleepTimeMs())
-                                                                      .build())
-                                                      .build())
-                                      .setStorageDir(CONF.getConsensusDir())
-                                      .build(),
-                              gid -> stateMachine)
-                      .orElseThrow(
-                              () ->
-                                      new IllegalArgumentException(
-                                              String.format(
-                                                      ConsensusFactory.CONSTRUCT_FAILED_MSG,
-                                                      CONF.getConfigNodeConsensusProtocolClass())));
+          ConsensusFactory.getConsensusImpl(
+                  CONF.getConfigNodeConsensusProtocolClass(),
+                  ConsensusConfig.newBuilder()
+                      .setThisNodeId(CONF.getConfigNodeId())
+                      .setThisNode(
+                          new TEndPoint(CONF.getInternalAddress(), CONF.getConsensusPort()))
+                      .setRatisConfig(
+                          RatisConfig.newBuilder()
+                              .setLeaderLogAppender(
+                                  RatisConfig.LeaderLogAppender.newBuilder()
+                                      .setBufferByteLimit(
+                                          CONF
+                                              .getPartitionRegionRatisConsensusLogAppenderBufferSize())
+                                      .build())
+                              .setSnapshot(
+                                  RatisConfig.Snapshot.newBuilder()
+                                      .setAutoTriggerThreshold(
+                                          CONF.getPartitionRegionRatisSnapshotTriggerThreshold())
+                                      .build())
+                              .setLog(
+                                  RatisConfig.Log.newBuilder()
+                                      .setUnsafeFlushEnabled(
+                                          CONF.isPartitionRegionRatisLogUnsafeFlushEnable())
+                                      .setSegmentCacheSizeMax(
+                                          SizeInBytes.valueOf(
+                                              CONF.getPartitionRegionRatisLogSegmentSizeMax()))
+                                      .build())
+                              .setGrpc(
+                                  RatisConfig.Grpc.newBuilder()
+                                      .setFlowControlWindow(
+                                          SizeInBytes.valueOf(
+                                              CONF.getPartitionRegionRatisGrpcFlowControlWindow()))
+                                      .build())
+                              .setRpc(
+                                  RatisConfig.Rpc.newBuilder()
+                                      .setTimeoutMin(
+                                          TimeDuration.valueOf(
+                                              CONF
+                                                  .getPartitionRegionRatisRpcLeaderElectionTimeoutMinMs(),
+                                              TimeUnit.MILLISECONDS))
+                                      .setTimeoutMax(
+                                          TimeDuration.valueOf(
+                                              CONF
+                                                  .getPartitionRegionRatisRpcLeaderElectionTimeoutMaxMs(),
+                                              TimeUnit.MILLISECONDS))
+                                      .setRequestTimeout(
+                                          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()
+                                      .setClientRequestTimeoutMillis(
+                                          CONF.getPartitionRegionRatisRequestTimeoutMs())
+                                      .setClientMaxRetryAttempt(
+                                          CONF.getPartitionRegionRatisMaxRetryAttempts())
+                                      .setClientRetryInitialSleepTimeMs(
+                                          CONF.getPartitionRegionRatisInitialSleepTimeMs())
+                                      .setClientRetryMaxSleepTimeMs(
+                                          CONF.getPartitionRegionRatisMaxSleepTimeMs())
+                                      .build())
+                              .build())
+                      .setStorageDir(CONF.getConsensusDir())
+                      .build(),
+                  gid -> stateMachine)
+              .orElseThrow(
+                  () ->
+                      new IllegalArgumentException(
+                          String.format(
+                              ConsensusFactory.CONSTRUCT_FAILED_MSG,
+                              CONF.getConfigNodeConsensusProtocolClass())));
     }
     consensusImpl.start();