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

rong pushed a commit to branch load-multi-dir-fix
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 87f616cdc6cdfc1a9bc99afe66c35ab85ed34571
Author: Steve Yurong Su <[email protected]>
AuthorDate: Tue Jun 11 20:50:47 2024 +0800

    Load: Update loadTsFileDirs after all newLoadTsFileDirs are generated to 
avoid undefined behavior
---
 .../src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java      | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index de2ba36464b..ea42d9f4d73 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -1467,11 +1467,16 @@ public class IoTDBConfig {
   }
 
   public void formulateLoadTsFileDirs(String[][] tierDataDirs) {
-    loadTsFileDirs = new String[tierDataDirs.length];
+    final String[] newLoadTsFileDirs = new String[tierDataDirs.length];
     for (int i = 0; i < tierDataDirs.length; i++) {
-      loadTsFileDirs[i] =
+      newLoadTsFileDirs[i] =
           tierDataDirs[i][0] + File.separator + 
IoTDBConstant.LOAD_TSFILE_FOLDER_NAME;
     }
+
+    // Update loadTsFileDirs after all newLoadTsFileDirs are generated,
+    // or the newLoadTsFileDirs will be used in the middle of the process
+    // and cause the undefined behavior.
+    this.loadTsFileDirs = newLoadTsFileDirs;
   }
 
   public String getSchemaDir() {

Reply via email to