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

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

commit 4ff5078d03be00c05d53dbe7d285472b3c969606
Author: JackieTien97 <[email protected]>
AuthorDate: Thu Oct 12 15:29:56 2023 +0800

    [IOTDB-6178] Add fsync for schemaregion, CQInfo, ModelInfo
---
 .../java/org/apache/iotdb/confignode/persistence/ModelInfo.java  | 1 +
 .../java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java  | 1 +
 .../mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java            | 9 +++++++--
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java
index 89996da9717..fe8c2b7b103 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java
@@ -251,6 +251,7 @@ public class ModelInfo implements SnapshotProcessor {
     acquireModelTableReadLock();
     try (FileOutputStream fileOutputStream = new 
FileOutputStream(snapshotFile)) {
       modelTable.serialize(fileOutputStream);
+      fileOutputStream.getFD().sync();
       return true;
     } finally {
       releaseModelTableReadLock();
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java
index e6899e99f9f..bdd6b8226a7 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java
@@ -226,6 +226,7 @@ public class CQInfo implements SnapshotProcessor {
     try (FileOutputStream fileOutputStream = new 
FileOutputStream(snapshotFile)) {
 
       serialize(fileOutputStream);
+      fileOutputStream.getFD().sync();
       return true;
     } finally {
       lock.readLock().unlock();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java
index 22a0bf27d62..a0a887ce9a9 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java
@@ -81,9 +81,14 @@ public class MemMTreeSnapshotUtil {
     File snapshot = SystemFileFactory.INSTANCE.getFile(snapshotDir, 
SchemaConstant.MTREE_SNAPSHOT);
 
     try {
-      try (BufferedOutputStream outputStream =
-          new BufferedOutputStream(new FileOutputStream(snapshotTmp))) {
+      FileOutputStream fileOutputStream = new FileOutputStream(snapshotTmp);
+      BufferedOutputStream outputStream = new 
BufferedOutputStream(fileOutputStream);
+      try {
         serializeTo(store, outputStream);
+      } finally {
+        outputStream.flush();
+        fileOutputStream.getFD().sync();
+        outputStream.close();
       }
       if (snapshot.exists() && !FileUtils.deleteFileIfExist(snapshot)) {
         logger.error(

Reply via email to