This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new ba77da8a75a [IOTDB-6178] Add fsync for schemaregion, CQInfo, ModelInfo
ba77da8a75a is described below
commit ba77da8a75a035b36079d0aa3e767c5672a33898
Author: Jackie Tien <[email protected]>
AuthorDate: Fri Oct 13 18:01:48 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(