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

marklau99 pushed a commit to branch IOTDB-4211
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 679f7252366aa09274df6464e864665bf27cc112
Author: Liu Xuxin <[email protected]>
AuthorDate: Mon Aug 29 11:06:32 2022 +0800

    add param enable_snapshot
---
 .../resources/conf/iotdb-datanode.properties       |  9 ++++++++-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 10 ++++++++++
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  4 ++++
 .../statemachine/DataRegionStateMachine.java       | 22 +++++++++++++---------
 4 files changed, 35 insertions(+), 10 deletions(-)

diff --git a/server/src/assembly/resources/conf/iotdb-datanode.properties 
b/server/src/assembly/resources/conf/iotdb-datanode.properties
index def08b4787..d941beda4b 100644
--- a/server/src/assembly/resources/conf/iotdb-datanode.properties
+++ b/server/src/assembly/resources/conf/iotdb-datanode.properties
@@ -1119,4 +1119,11 @@ trigger_forward_mqtt_pool_size=4
 # external_limiter_dir=ext\\limiter
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# external_limiter_dir=ext/limiter
\ No newline at end of file
+# external_limiter_dir=ext/limiter
+
+####################
+### Snapshot Configuration
+####################
+
+# enable taking snapshot in distributed mode
+# enable_snapshot=true
\ No newline at end of file
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 fda9580ef5..e6a857b017 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
@@ -979,8 +979,18 @@ public class IoTDBConfig {
   /** Maximum size of wal buffer used in MultiLeader consensus. Unit: byte */
   private long throttleThreshold = 50 * 1024 * 1024 * 1024L;
 
+  private boolean enableSnapshot = true;
+
   IoTDBConfig() {}
 
+  public boolean isEnableSnapshot() {
+    return enableSnapshot;
+  }
+
+  public void setEnableSnapshot(boolean enableSnapshot) {
+    this.enableSnapshot = enableSnapshot;
+  }
+
   public float getUdfMemoryBudgetInMB() {
     return udfMemoryBudgetInMB;
   }
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 182c126c56..b90b261ed5 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
@@ -345,6 +345,10 @@ public class IoTDBDescriptor {
                 "enable_mem_control", 
Boolean.toString(conf.isEnableMemControl())))));
     logger.info("IoTDB enable memory control: {}", conf.isEnableMemControl());
 
+    conf.setEnableSnapshot(
+        (Boolean.parseBoolean(
+            properties.getProperty("enable_snapshot", 
Boolean.toString(conf.isEnableSnapshot())))));
+
     long seqTsFileSize =
         Long.parseLong(
             properties
diff --git 
a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
 
b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
index d5cf5e4533..0ba8e344f6 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
@@ -95,15 +95,19 @@ public class DataRegionStateMachine extends 
BaseStateMachine {
 
   @Override
   public boolean takeSnapshot(File snapshotDir) {
-    try {
-      return new 
SnapshotTaker(region).takeFullSnapshot(snapshotDir.getAbsolutePath(), true);
-    } catch (Exception e) {
-      logger.error(
-          "Exception occurs when taking snapshot for {}-{} in {}",
-          region.getStorageGroupName(),
-          region.getDataRegionId(),
-          snapshotDir,
-          e);
+    if (IoTDBDescriptor.getInstance().getConfig().isEnableSnapshot()) {
+      try {
+        return new 
SnapshotTaker(region).takeFullSnapshot(snapshotDir.getAbsolutePath(), true);
+      } catch (Exception e) {
+        logger.error(
+            "Exception occurs when taking snapshot for {}-{} in {}",
+            region.getStorageGroupName(),
+            region.getDataRegionId(),
+            snapshotDir,
+            e);
+        return false;
+      }
+    } else {
       return false;
     }
   }

Reply via email to