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(
