[IOTDB-4533] delete an unexpected folder is added  (#7470)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/load/LoadTsFileManager.java b/server/src/main/java/org/apache/iotdb/db/engine/load/LoadTsFileManager.java
index 48be7a3..e9d7248 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/load/LoadTsFileManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/load/LoadTsFileManager.java
@@ -44,6 +44,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.ReentrantLock;
 
 /**
@@ -58,26 +59,19 @@
 
   private final File loadDir;
 
-  private Map<String, TsFileWriterManager> uuid2WriterManager;
-  private Map<String, Integer> dataPartition2NextTsFileIndex;
+  private final Map<String, TsFileWriterManager> uuid2WriterManager;
+  private final Map<String, Integer> dataPartition2NextTsFileIndex;
 
   private final ReentrantLock lock;
 
   public LoadTsFileManager() {
     this.loadDir = SystemFileFactory.INSTANCE.getFile(config.getLoadTsFileDir());
-    this.uuid2WriterManager = new HashMap<>();
+    this.uuid2WriterManager = new ConcurrentHashMap<>();
     this.dataPartition2NextTsFileIndex = new HashMap<>();
     this.lock = new ReentrantLock();
 
-    clearDir(loadDir);
-  }
-
-  private void clearDir(File dir) {
-    if (dir.delete()) {
-      logger.info(String.format("Delete origin load TsFile dir %s.", dir.getPath()));
-    }
-    if (!dir.mkdirs()) {
-      logger.warn(String.format("load TsFile dir %s can not be created.", dir.getPath()));
+    if (loadDir.delete()) {
+      logger.info(String.format("Delete origin load TsFile dir %s.", loadDir.getPath()));
     }
   }
 
@@ -99,6 +93,7 @@
     uuid2WriterManager.get(uuid).loadAll();
     uuid2WriterManager.get(uuid).close();
     uuid2WriterManager.remove(uuid);
+    clean();
     return true;
   }
 
@@ -108,6 +103,7 @@
     }
     uuid2WriterManager.get(uuid).close();
     uuid2WriterManager.remove(uuid);
+    clean();
     return true;
   }
 
@@ -125,6 +121,12 @@
     }
   }
 
+  private void clean() {
+    if (loadDir.delete()) { // this method will check if there sub-dir in this dir.
+      logger.info(String.format("Delete load dir %s.", loadDir.getPath()));
+    }
+  }
+
   private class TsFileWriterManager {
     private final File taskDir;
     private Map<DataPartitionInfo, TsFileIOWriter> dataPartition2Writer;
@@ -138,6 +140,15 @@
       clearDir(taskDir);
     }
 
+    private void clearDir(File dir) {
+      if (dir.delete()) {
+        logger.info(String.format("Delete origin load TsFile dir %s.", dir.getPath()));
+      }
+      if (!dir.mkdirs()) {
+        logger.warn(String.format("load TsFile dir %s can not be created.", dir.getPath()));
+      }
+    }
+
     private void write(DataPartitionInfo partitionInfo, ChunkData chunkData) throws IOException {
       if (!dataPartition2Writer.containsKey(partitionInfo)) {
         File newTsFile =