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

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


The following commit(s) were added to refs/heads/Fsync-2 by this push:
     new 8c1336675db fsync for ClusterSchemaInfo
8c1336675db is described below

commit 8c1336675db25cfac19d4a37bc6beafaf9ef497c
Author: JackieTien97 <[email protected]>
AuthorDate: Thu Oct 26 16:26:42 2023 +0800

    fsync for ClusterSchemaInfo
---
 .../persistence/schema/ClusterSchemaInfo.java         |  9 +++++++--
 .../persistence/schema/TemplatePreSetTable.java       | 18 +++++++++++-------
 .../confignode/persistence/schema/TemplateTable.java  | 19 ++++++++++++-------
 3 files changed, 30 insertions(+), 16 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
index caff28f250a..83998bf78b0 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
@@ -609,11 +609,16 @@ public class ClusterSchemaInfo implements 
SnapshotProcessor {
 
     databaseReadWriteLock.readLock().lock();
     try {
-      try (FileOutputStream fileOutputStream = new FileOutputStream(tmpFile);
-          BufferedOutputStream outputStream = new 
BufferedOutputStream(fileOutputStream)) {
+      FileOutputStream fileOutputStream = new FileOutputStream(tmpFile);
+      BufferedOutputStream outputStream = new 
BufferedOutputStream(fileOutputStream);
+      try {
         // Take snapshot for MTree
         mTree.serialize(outputStream);
         outputStream.flush();
+      } finally {
+        outputStream.flush();
+        fileOutputStream.getFD().sync();
+        outputStream.close();
       }
 
       return tmpFile.renameTo(snapshotFile);
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplatePreSetTable.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplatePreSetTable.java
index 2c0a3754efa..ed1e0310572 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplatePreSetTable.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplatePreSetTable.java
@@ -114,13 +114,17 @@ public class TemplatePreSetTable {
       }
       File tmpFile = new File(snapshotFile.getAbsolutePath() + "-" + 
UUID.randomUUID());
 
-      try (FileOutputStream fileOutputStream = new FileOutputStream(tmpFile);
-          BufferedOutputStream outputStream = new 
BufferedOutputStream(fileOutputStream)) {
-        serialize(outputStream);
-        outputStream.flush();
-        fileOutputStream.flush();
-        outputStream.close();
-        fileOutputStream.close();
+      try {
+        FileOutputStream fileOutputStream = new FileOutputStream(tmpFile);
+        BufferedOutputStream outputStream = new 
BufferedOutputStream(fileOutputStream);
+        try {
+          serialize(outputStream);
+        } finally {
+          outputStream.flush();
+          fileOutputStream.getFD().sync();
+          outputStream.close();
+        }
+
         return tmpFile.renameTo(snapshotFile);
       } finally {
         for (int retry = 0; retry < 5; retry++) {
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
index ce6586eca17..0eb00fa3382 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
@@ -221,13 +221,18 @@ public class TemplateTable {
     }
     File tmpFile = new File(snapshotFile.getAbsolutePath() + "-" + 
UUID.randomUUID());
     templateReadWriteLock.writeLock().lock();
-    try (FileOutputStream fileOutputStream = new FileOutputStream(tmpFile);
-        BufferedOutputStream outputStream = new 
BufferedOutputStream(fileOutputStream)) {
-      serialize(outputStream);
-      outputStream.flush();
-      fileOutputStream.flush();
-      outputStream.close();
-      fileOutputStream.close();
+
+    try {
+      FileOutputStream fileOutputStream = new FileOutputStream(tmpFile);
+      BufferedOutputStream outputStream = new 
BufferedOutputStream(fileOutputStream);
+      try {
+        serialize(outputStream);
+      } finally {
+        outputStream.flush();
+        fileOutputStream.getFD().sync();
+        outputStream.close();
+      }
+
       return tmpFile.renameTo(snapshotFile);
     } finally {
       for (int retry = 0; retry < 5; retry++) {

Reply via email to