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++) {