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);
       }
     }
 

Reply via email to