You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ej...@apache.org on 2021/03/14 13:38:05 UTC
[iotdb] branch dynamic_compaction updated: finish read problem
This is an automated email from the ASF dual-hosted git repository.
ejttianyu pushed a commit to branch dynamic_compaction
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dynamic_compaction by this push:
new 74b5009 finish read problem
74b5009 is described below
commit 74b500909b263d56596c58bb2b690ee57fae20a1
Author: EJTTianyu <16...@qq.com>
AuthorDate: Sun Mar 14 21:37:30 2021 +0800
finish read problem
---
.../db/engine/cache/TimeSeriesMetadataCache.java | 3 +++
.../HitterLevelCompactionTsFileManagement.java | 21 ++++++++++++++++-----
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java b/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
index e49c12f..f8fe217 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
@@ -167,6 +167,9 @@ public class TimeSeriesMetadataCache {
printCacheLog(false);
List<TimeseriesMetadata> timeSeriesMetadataList = reader
.readTimeseriesMetadata(path, allSensors);
+ if (timeSeriesMetadataList == null) {
+ return null;
+ }
// put TimeSeriesMetadata of all sensors used in this query into cache
lock.writeLock().lock();
try {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/hitter/HitterLevelCompactionTsFileManagement.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/hitter/HitterLevelCompactionTsFileManagement.java
index 5783d3c..28721e4 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/hitter/HitterLevelCompactionTsFileManagement.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/hitter/HitterLevelCompactionTsFileManagement.java
@@ -113,7 +113,8 @@ public class HitterLevelCompactionTsFileManagement extends LevelCompactionTsFile
for (TsFileResource fileResource : toMergeTsFiles) {
// remove cache
ChunkMetadataCache.getInstance().remove(fileResource);
- FileReaderManager.getInstance().closeFileAndRemoveReader(fileResource.getTsFilePath());
+ FileReaderManager.getInstance()
+ .closeFileAndRemoveReader(fileResource.getTsFilePath());
TsFileIOWriter oldFileWriter = getOldFileWriter(fileResource);
// filter all the chunks that have been merged
@@ -144,20 +145,30 @@ public class HitterLevelCompactionTsFileManagement extends LevelCompactionTsFile
historicalVersions.addAll(tsFileResource.getHistoricalVersions());
}
toMergeTsFiles.get(0).setHistoricalVersions(historicalVersions);
- for (TsFileResource tsFileResource: toMergeTsFiles) {
+ // update start end time
+ for (Map.Entry<String, Integer> deviceIndexEntry : newResource
+ .getDeviceToIndexMap().entrySet()) {
+ toMergeTsFiles.get(0).updateStartTime(deviceIndexEntry.getKey(),
+ newResource.getStartTime(deviceIndexEntry.getKey()));
+ toMergeTsFiles.get(0).updateEndTime(deviceIndexEntry.getKey(),
+ newResource.getEndTime(deviceIndexEntry.getKey()));
+ }
+ for (TsFileResource tsFileResource : toMergeTsFiles) {
// rename file
File oldFile = tsFileResource.getTsFile();
File newFile = createNewTsFileName(oldFile, i + 1);
FSFactoryProducer.getFSFactory().moveFile(oldFile, newFile);
FSFactoryProducer.getFSFactory().moveFile(
- FSFactoryProducer.getFSFactory().getFile(oldFile + TsFileResource.RESOURCE_SUFFIX),
- FSFactoryProducer.getFSFactory().getFile(newFile + TsFileResource.RESOURCE_SUFFIX));
+ FSFactoryProducer.getFSFactory()
+ .getFile(oldFile + TsFileResource.RESOURCE_SUFFIX),
+ FSFactoryProducer.getFSFactory()
+ .getFile(newFile + TsFileResource.RESOURCE_SUFFIX));
tsFileResource.setFile(newFile);
//
tsFileResource.serialize();
tsFileResource.close();
}
- for (TsFileIOWriter writer: writers){
+ for (TsFileIOWriter writer : writers) {
writer.endFile();
}
newFileWriter.close();