Skip to content

Commit 9d9902f

Browse files
authored
Fix insert object segment error when use multiple dirs (#16965)
1 parent b4a3e2e commit 9d9902f

File tree

1 file changed

+15
-3
lines changed
  • iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion

1 file changed

+15
-3
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3600,9 +3600,21 @@ public void writeObject(ObjectNode objectNode) throws Exception {
36003600
writeLock("writeObject");
36013601
try {
36023602
String relativeTmpPathString = objectNode.getFilePathString() + ".tmp";
3603-
String objectFileDir = TierManager.getInstance().getNextFolderForObjectFile();
3604-
File objectTmpFile =
3605-
FSFactoryProducer.getFSFactory().getFile(objectFileDir, relativeTmpPathString);
3603+
String objectFileDir = null;
3604+
File objectTmpFile = null;
3605+
for (String objectDir : TierManager.getInstance().getAllObjectFileFolders()) {
3606+
File tmpFile = FSFactoryProducer.getFSFactory().getFile(objectDir, relativeTmpPathString);
3607+
if (tmpFile.exists()) {
3608+
objectFileDir = objectDir;
3609+
objectTmpFile = tmpFile;
3610+
break;
3611+
}
3612+
}
3613+
if (objectTmpFile == null) {
3614+
objectFileDir = TierManager.getInstance().getNextFolderForObjectFile();
3615+
objectTmpFile =
3616+
FSFactoryProducer.getFSFactory().getFile(objectFileDir, relativeTmpPathString);
3617+
}
36063618
try (ObjectWriter writer = new ObjectWriter(objectTmpFile)) {
36073619
writer.write(
36083620
objectNode.isGeneratedByRemoteConsensusLeader(),

0 commit comments

Comments
 (0)