[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 =