You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ma...@apache.org on 2023/12/15 06:53:31 UTC
(iotdb) 01/01: take snapshot for mods using copy
This is an automated email from the ASF dual-hosted git repository.
marklau99 pushed a commit to branch take-snapshot-for-mods-by-copy
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit eba538fd5a950abbed129ee707e0eaeaefde8f20
Author: Liu Xuxin <li...@outlook.com>
AuthorDate: Fri Dec 15 14:53:04 2023 +0800
take snapshot for mods using copy
---
.../storageengine/dataregion/snapshot/SnapshotTaker.java | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotTaker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotTaker.java
index b404ca2fd5e..a9f43b34fd1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotTaker.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotTaker.java
@@ -177,7 +177,7 @@ public class SnapshotTaker {
new File(snapshotTsFile.getAbsolutePath() + TsFileResource.RESOURCE_SUFFIX),
new File(tsFile.getAbsolutePath() + TsFileResource.RESOURCE_SUFFIX));
if (resource.getModFile().exists()) {
- createHardLink(
+ copyFile(
new File(snapshotTsFile.getAbsolutePath() + ModificationFile.FILE_SUFFIX),
new File(tsFile.getAbsolutePath() + ModificationFile.FILE_SUFFIX));
}
@@ -201,6 +201,18 @@ public class SnapshotTaker {
snapshotLogger.logFile(source);
}
+ private void copyFile(File target, File source) throws IOException {
+ if (!target.getParentFile().exists()) {
+ LOGGER.error("Hard link target dir {} doesn't exist", target.getParentFile());
+ }
+ if (!source.exists()) {
+ LOGGER.error("Hard link source file {} doesn't exist", source);
+ }
+ Files.deleteIfExists(target.toPath());
+ Files.copy(source.toPath(), target.toPath());
+ snapshotLogger.logFile(source);
+ }
+
/**
* Construct the snapshot file path for a given tsfile, and will create the dir. Eg, given a
* tsfile in /data/iotdb/data/sequence/root.testsg/1/0/1-1-0-0.tsfile, with snapshotId "sm123",