This is an automated email from the ASF dual-hosted git repository.
ejttianyu pushed a commit to branch proceeding_vldb
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/proceeding_vldb by this push:
new fe7f596 fix level compaction version 1
fe7f596 is described below
commit fe7f59679f75476bf90212a2bb049ec49d8aa29b
Author: EJTTianyu <[email protected]>
AuthorDate: Sun Feb 21 14:52:54 2021 +0800
fix level compaction version 1
---
.../apache/iotdb/db/engine/compaction/TsFileManagement.java | 2 +-
.../compaction/level/LevelCompactionTsFileManagement.java | 12 +++++++-----
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java
b/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java
index c7ee4d3..3f037d2 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java
@@ -159,7 +159,7 @@ public abstract class TsFileManagement {
forkTsFileList(
forkedSequenceTsFileResources,
sequenceTsFileResources.computeIfAbsent(timePartition,
this::newSequenceTsFileResources),
- seqLevelNum);
+ seqLevelNum + 1);
}
synchronized (unSequenceTsFileResources) {
forkTsFileList(
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 4999d13..6a3b0e9 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
@@ -475,11 +475,10 @@ public class LevelCompactionTsFileManagement extends
TsFileManagement {
FSFactoryProducer.getFSFactory().getFile(oldFile +
RESOURCE_SUFFIX),
FSFactoryProducer.getFSFactory().getFile(newLevelFile +
RESOURCE_SUFFIX));
- oldRes.setFile(newLevelFile);
sequenceTsFileResources.get(timePartition).get(level -
1).remove(oldRes);
- sequenceTsFileResources.get(timePartition).get(level).add(oldRes);
-
forkedSequenceTsFileResources.get(level - 1).remove(0);
+ oldRes.setFile(newLevelFile);
+ sequenceTsFileResources.get(timePartition).get(level).add(oldRes);
forkedSequenceTsFileResources.get(level).add(oldRes);
} finally {
writeUnlock();
@@ -577,7 +576,7 @@ public class LevelCompactionTsFileManagement extends
TsFileManagement {
for (TsFileResource tsFileResource : unseqFiles) {
historicalVersions.addAll(tsFileResource.getHistoricalVersions());
}
- Set<TsFileResource> newTsResources = new HashSet<>();
+ List<TsFileResource> newTsResources = new ArrayList<>();
Set<PartialPath> devices = MManager.getInstance()
.getDevices(new PartialPath(storageGroupName));
Map<PartialPath, ChunkWriterImpl> chunkWriterCacheMap = new HashMap<>();
@@ -656,16 +655,18 @@ public class LevelCompactionTsFileManagement extends
TsFileManagement {
}
private void cleanUp(Map<Long, Map<Long, List<TsFileResource>>> resources,
- Set<TsFileResource> newTsResources, long level, long timePartition) {
+ List<TsFileResource> newTsResources, long level, long timePartition) {
writeLock();
try {
Map<Long, List<TsFileResource>> cleanRes = resources.get(timePartition);
for (Entry<Long, List<TsFileResource>> res : cleanRes.entrySet()) {
if (res.getKey() == 0L) {
unSequenceTsFileResources.get(timePartition).get(0).removeAll(res.getValue());
+ forkedUnSequenceTsFileResources.get(0).removeAll(res.getValue());
} else {
sequenceTsFileResources.get(timePartition).get((int) (res.getKey() -
1))
.removeAll(res.getValue());
+ forkedSequenceTsFileResources.get((int) (res.getKey() -
1)).removeAll(res.getValue());
}
for (TsFileResource deleteRes : res.getValue()) {
ChunkCache.getInstance().clear();
@@ -684,6 +685,7 @@ public class LevelCompactionTsFileManagement extends
TsFileManagement {
FSFactoryProducer.getFSFactory().getFile(newLevelFile +
RESOURCE_SUFFIX));
oldResource.setFile(newLevelFile);
sequenceTsFileResources.get(timePartition).get((int) (level -
1)).add(oldResource);
+ forkedSequenceTsFileResources.get((int) (level - 1)).add(oldResource);
}
} catch (Exception e) {
//TODO do nothing