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

jiangtian 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 9d9902fa685 Fix insert object segment error when use multiple dirs 
(#16965)
9d9902fa685 is described below

commit 9d9902fa685e4a1caa41b15286b54be0d61b8cff
Author: Haonan <[email protected]>
AuthorDate: Tue Dec 30 09:36:18 2025 +0800

    Fix insert object segment error when use multiple dirs (#16965)
---
 .../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