This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch fix_object_mult_dir
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 075e3a1e9ed13e561035e211c4492972d9ddd7d5
Author: HTHou <[email protected]>
AuthorDate: Mon Dec 29 18:39:22 2025 +0800

    Fix insert object segment error when use multiple dirs
---
 .../iotdb/db/storageengine/dataregion/DataRegion.java  | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index 82f5b7a0a71..7d7fb8b9180 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -3600,9 +3600,21 @@ public class DataRegion implements IDataRegionForQuery {
     writeLock("writeObject");
     try {
       String relativeTmpPathString = objectNode.getFilePathString() + ".tmp";
-      String objectFileDir = 
TierManager.getInstance().getNextFolderForObjectFile();
-      File objectTmpFile =
-          FSFactoryProducer.getFSFactory().getFile(objectFileDir, 
relativeTmpPathString);
+      String objectFileDir = null;
+      File objectTmpFile = null;
+      for (String objectDir : 
TierManager.getInstance().getAllObjectFileFolders()) {
+        File tmpFile = FSFactoryProducer.getFSFactory().getFile(objectDir, 
relativeTmpPathString);
+        if (tmpFile.exists()) {
+          objectFileDir = objectDir;
+          objectTmpFile = tmpFile;
+          break;
+        }
+      }
+      if (objectTmpFile == null) {
+        objectFileDir = TierManager.getInstance().getNextFolderForObjectFile();
+        objectTmpFile =
+            FSFactoryProducer.getFSFactory().getFile(objectFileDir, 
relativeTmpPathString);
+      }
       try (ObjectWriter writer = new ObjectWriter(objectTmpFile)) {
         writer.write(
             objectNode.isGeneratedByRemoteConsensusLeader(),

Reply via email to