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(),
