This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch cp-pr-18045-dev-1.3 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 8ac47dc49b867466168350997ce7a1b93fe5161d Author: shuwenwei <[email protected]> AuthorDate: Wed Jul 1 16:40:58 2026 +0800 Replace remaining compaction hard links with FileUtils --- .../execute/task/InnerSpaceCompactionTask.java | 13 +++++---- .../task/RepairUnsortedFileCompactionTask.java | 7 +++-- .../InsertionCrossSpaceCompactionRecoverTest.java | 33 +++++++++++++--------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java index 77627579252..434c42be5ce 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java @@ -19,6 +19,7 @@ package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task; +import org.apache.iotdb.commons.utils.FileUtils; import org.apache.iotdb.commons.utils.TestOnly; import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.exception.DiskSpaceInsufficientException; @@ -443,14 +444,16 @@ public class InnerSpaceCompactionTask extends AbstractCompactionTask { for (int i = 0; i < filesView.renamedTargetFiles.size(); i++) { TsFileResource oldFile = filesView.skippedSourceFiles.get(i); TsFileResource newFile = filesView.renamedTargetFiles.get(i); - Files.createLink(newFile.getTsFile().toPath(), oldFile.getTsFile().toPath()); - Files.createLink( + FileUtils.createLink(newFile.getTsFile().toPath(), oldFile.getTsFile().toPath(), true); + FileUtils.createLink( new File(newFile.getTsFilePath() + TsFileResource.RESOURCE_SUFFIX).toPath(), - new File(oldFile.getTsFilePath() + TsFileResource.RESOURCE_SUFFIX).toPath()); + new File(oldFile.getTsFilePath() + TsFileResource.RESOURCE_SUFFIX).toPath(), + true); if (oldFile.modFileExists()) { - Files.createLink( + FileUtils.createLink( new File(newFile.getTsFilePath() + ModificationFile.FILE_SUFFIX).toPath(), - new File(oldFile.getTsFilePath() + ModificationFile.FILE_SUFFIX).toPath()); + new File(oldFile.getTsFilePath() + ModificationFile.FILE_SUFFIX).toPath(), + true); } newFile.deserialize(); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/RepairUnsortedFileCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/RepairUnsortedFileCompactionTask.java index f43bd7767b2..56915e364dc 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/RepairUnsortedFileCompactionTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/RepairUnsortedFileCompactionTask.java @@ -19,6 +19,7 @@ package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task; +import org.apache.iotdb.commons.utils.FileUtils; import org.apache.iotdb.commons.conf.IoTDBConstant; import org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskType; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl.RepairUnsortedFileCompactionPerformer; @@ -35,7 +36,6 @@ import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo; import java.io.File; import java.io.IOException; -import java.nio.file.Files; import java.util.Arrays; import java.util.Collections; import java.util.concurrent.CountDownLatch; @@ -169,9 +169,10 @@ public class RepairUnsortedFileCompactionTask extends InnerSpaceCompactionTask { filesView.sourceFilesInCompactionPerformer, filesView.targetFilesInPerformer); } else { if (sourceFile.modFileExists()) { - Files.createLink( + FileUtils.createLink( new File(filesView.targetFilesInPerformer.get(0).getModFile().getFilePath()).toPath(), - new File(sourceFile.getModFile().getFilePath()).toPath()); + new File(sourceFile.getModFile().getFilePath()).toPath(), + true); } } } diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionRecoverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionRecoverTest.java index 40fdc2d5cd8..06566613b6c 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionRecoverTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionRecoverTest.java @@ -18,6 +18,7 @@ */ package org.apache.iotdb.db.storageengine.dataregion.compaction.cross; +import org.apache.iotdb.commons.utils.FileUtils; import org.apache.iotdb.commons.exception.IllegalPathException; import org.apache.iotdb.commons.exception.MetadataException; import org.apache.iotdb.db.exception.MergeException; @@ -54,7 +55,6 @@ import org.junit.Test; import java.io.File; import java.io.IOException; -import java.nio.file.Files; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -145,10 +145,11 @@ public class InsertionCrossSpaceCompactionRecoverTest extends AbstractCompaction File sourceTsFile = unseqResource1.getTsFile(); File targetTsFile = targetFile.getTsFile(); - Files.createLink(targetTsFile.toPath(), sourceTsFile.toPath()); - Files.createLink( + FileUtils.createLink(targetTsFile.toPath(), sourceTsFile.toPath(), true); + FileUtils.createLink( new File(targetTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath(), - new File(sourceTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath()); + new File(sourceTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath(), + true); } // recover compaction, all source file should exist and target file should be deleted @@ -231,14 +232,16 @@ public class InsertionCrossSpaceCompactionRecoverTest extends AbstractCompaction File sourceTsFile = unseqResource1.getTsFile(); File targetTsFile = targetFile.getTsFile(); - Files.createLink(targetTsFile.toPath(), sourceTsFile.toPath()); - Files.createLink( + FileUtils.createLink(targetTsFile.toPath(), sourceTsFile.toPath(), true); + FileUtils.createLink( new File(targetTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath(), - new File(sourceTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath()); + new File(sourceTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath(), + true); if (unseqResource1.getModFile().exists()) { - Files.createLink( + FileUtils.createLink( new File(targetTsFile.getPath() + ModificationFile.FILE_SUFFIX).toPath(), - new File(sourceTsFile.getPath() + ModificationFile.FILE_SUFFIX).toPath()); + new File(sourceTsFile.getPath() + ModificationFile.FILE_SUFFIX).toPath(), + true); } } @@ -325,14 +328,16 @@ public class InsertionCrossSpaceCompactionRecoverTest extends AbstractCompaction File sourceTsFile = unseqResource1.getTsFile(); File targetTsFile = targetFile.getTsFile(); - Files.createLink(targetTsFile.toPath(), sourceTsFile.toPath()); - Files.createLink( + FileUtils.createLink(targetTsFile.toPath(), sourceTsFile.toPath(), true); + FileUtils.createLink( new File(targetTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath(), - new File(sourceTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath()); + new File(sourceTsFile.getPath() + TsFileResource.RESOURCE_SUFFIX).toPath(), + true); if (unseqResource1.getModFile().exists()) { - Files.createLink( + FileUtils.createLink( new File(targetTsFile.getPath() + ModificationFile.FILE_SUFFIX).toPath(), - new File(sourceTsFile.getPath() + ModificationFile.FILE_SUFFIX).toPath()); + new File(sourceTsFile.getPath() + ModificationFile.FILE_SUFFIX).toPath(), + true); } }
