You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2020/11/19 00:59:48 UTC
[iotdb] branch rel/0.11 updated: Update level compaction delete and
change list lock (#2070)
This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch rel/0.11
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.11 by this push:
new 31a2347 Update level compaction delete and change list lock (#2070)
31a2347 is described below
commit 31a234799c52e480eaf1791f931769517d9d87eb
Author: zhanglingzhe0820 <44...@qq.com>
AuthorDate: Thu Nov 19 08:56:04 2020 +0800
Update level compaction delete and change list lock (#2070)
(cherry picked from commit 344c3875c4325c07bb14c0b2a95a9073714eb8cc)
---
.../level/LevelCompactionTsFileManagement.java | 23 +++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/LevelCompactionTsFileManagement.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/LevelCompactionTsFileManagement.java
index a6abaa1..afc5aa6 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/LevelCompactionTsFileManagement.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/LevelCompactionTsFileManagement.java
@@ -84,13 +84,17 @@ public class LevelCompactionTsFileManagement extends TsFileManagement {
clear();
}
- private void deleteLevelFiles(long timePartitionId, Collection<TsFileResource> mergeTsFiles) {
- logger.debug("{} [compaction] merge starts to delete file", storageGroupName);
+ private void deleteLevelFilesInDisk(Collection<TsFileResource> mergeTsFiles) {
+ logger.debug("{} [compaction] merge starts to delete real file", storageGroupName);
for (TsFileResource mergeTsFile : mergeTsFiles) {
deleteLevelFile(mergeTsFile);
logger
.info("{} [Compaction] delete TsFile {}", storageGroupName, mergeTsFile.getTsFilePath());
}
+ }
+
+ private void deleteLevelFilesInList(long timePartitionId, Collection<TsFileResource> mergeTsFiles) {
+ logger.debug("{} [compaction] merge starts to delete file list", storageGroupName);
for (int i = 0; i < seqLevelNum; i++) {
if (sequenceTsFileResources.containsKey(timePartitionId)) {
if (sequenceTsFileResources.get(timePartitionId).size() > i) {
@@ -339,12 +343,14 @@ public class LevelCompactionTsFileManagement extends TsFileManagement {
if (isSeq) {
for (TreeSet<TsFileResource> currMergeFile : sequenceTsFileResources
.get(timePartition)) {
- deleteLevelFiles(timePartition, currMergeFile);
+ deleteLevelFilesInDisk(currMergeFile);
+ deleteLevelFilesInList(timePartition, currMergeFile);
}
} else {
for (List<TsFileResource> currMergeFile : unSequenceTsFileResources
.get(timePartition)) {
- deleteLevelFiles(timePartition, currMergeFile);
+ deleteLevelFilesInDisk(currMergeFile);
+ deleteLevelFilesInList(timePartition, currMergeFile);
}
}
}
@@ -370,13 +376,15 @@ public class LevelCompactionTsFileManagement extends TsFileManagement {
CompactionUtils
.merge(targetResource, sourceTsFileResources, storageGroupName,
new CompactionLogger(storageGroupDir, storageGroupName), deviceSet, true);
- deleteLevelFiles(timePartition, sourceTsFileResources);
+ deleteLevelFilesInDisk(sourceTsFileResources);
+ deleteLevelFilesInList(timePartition, sourceTsFileResources);
sequenceTsFileResources.get(timePartition).get(level + 1).add(targetResource);
} else {
CompactionUtils
.merge(targetResource, sourceTsFileResources, storageGroupName,
new CompactionLogger(storageGroupDir, storageGroupName), deviceSet, false);
- deleteLevelFiles(timePartition, sourceTsFileResources);
+ deleteLevelFilesInDisk(sourceTsFileResources);
+ deleteLevelFilesInList(timePartition, sourceTsFileResources);
unSequenceTsFileResources.get(timePartition).get(level + 1).add(targetResource);
}
}
@@ -492,19 +500,20 @@ public class LevelCompactionTsFileManagement extends TsFileManagement {
storageGroupName, i, toMergeTsFiles.size());
writeLock();
try {
- deleteLevelFiles(timePartition, toMergeTsFiles);
compactionLogger.logMergeFinish();
if (sequence) {
sequenceTsFileResources.get(timePartition).get(i + 1).add(newResource);
} else {
unSequenceTsFileResources.get(timePartition).get(i + 1).add(newResource);
}
+ deleteLevelFilesInList(timePartition, toMergeTsFiles);
if (mergeResources.size() > i + 1) {
mergeResources.get(i + 1).add(newResource);
}
} finally {
writeUnlock();
}
+ deleteLevelFilesInDisk(toMergeTsFiles);
compactionLogger.close();
File logFile = FSFactoryProducer.getFSFactory()
.getFile(storageGroupDir, storageGroupName + COMPACTION_LOG_NAME);