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/01 03:02:00 UTC
[iotdb] branch master updated: [IOTDB-962] Improve the chunk
metadata cache process (#1874)
This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new fc0f3f7 [IOTDB-962] Improve the chunk metadata cache process (#1874)
fc0f3f7 is described below
commit fc0f3f7ac7ff9e7a216181cf386f4b1f3d61880a
Author: Jackie Tien <Ja...@foxmail.com>
AuthorDate: Sun Nov 1 11:01:43 2020 +0800
[IOTDB-962] Improve the chunk metadata cache process (#1874)
---
.../iotdb/db/engine/cache/ChunkMetadataCache.java | 33 ++++++++--------------
.../iotdb/db/engine/merge/task/MergeFileTask.java | 9 ++++++
.../engine/tsfilemanagement/TsFileManagement.java | 9 ++++++
.../chunk/metadata/DiskChunkMetadataLoader.java | 21 ++++++++------
.../chunk/metadata/MemChunkMetadataLoader.java | 3 +-
.../db/engine/cache/ChunkMetadataCacheTest.java | 4 +--
.../apache/iotdb/db/engine/merge/MergeTest.java | 19 +++++++------
.../iotdb/db/integration/IoTDBMergeTest.java | 1 -
.../query/reader/series/SeriesReaderTestUtil.java | 21 ++++++++------
.../apache/iotdb/db/utils/EnvironmentUtils.java | 14 +++++----
.../tsfile/file/metadata/TimeseriesMetadata.java | 2 +-
.../read/controller/IChunkMetadataLoader.java | 4 ++-
12 files changed, 81 insertions(+), 59 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCache.java b/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCache.java
index aca5ad2..40c69b7 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCache.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCache.java
@@ -20,6 +20,7 @@ package org.apache.iotdb.db.engine.cache;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.ReadWriteLock;
@@ -30,12 +31,11 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.conf.adapter.IoTDBConfigDynamicAdapter;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.query.control.FileReaderManager;
-import org.apache.iotdb.db.utils.FileLoaderUtils;
import org.apache.iotdb.db.utils.TestOnly;
import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.BloomFilter;
import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -106,22 +106,16 @@ public class ChunkMetadataCache {
/**
* get {@link ChunkMetadata}. THREAD SAFE.
*/
- public List<ChunkMetadata> get(String filePath, Path seriesPath)
- throws IOException {
+ public List<ChunkMetadata> get(String filePath, Path seriesPath,
+ TimeseriesMetadata timeseriesMetadata) throws IOException {
+ if (timeseriesMetadata == null) {
+ return Collections.emptyList();
+ }
if (!CACHE_ENABLE) {
// bloom filter part
TsFileSequenceReader tsFileReader = FileReaderManager.getInstance().get(filePath, true);
- BloomFilter bloomFilter = tsFileReader.readBloomFilter();
- if (bloomFilter != null && !bloomFilter.contains(seriesPath.getFullPath())) {
- if (logger.isDebugEnabled()) {
- logger.debug(String
- .format("path not found by bloom filter, file is: %s, path is: %s", filePath,
- seriesPath));
- }
- return new ArrayList<>();
- }
// If timeseries isn't included in the tsfile, empty list is returned.
- return tsFileReader.getChunkMetadataList(seriesPath);
+ return tsFileReader.readChunkMetaDataList(timeseriesMetadata);
}
AccountableString key = new AccountableString(filePath + IoTDBConstant.PATH_SEPARATOR
@@ -137,19 +131,13 @@ public class ChunkMetadataCache {
lock.readLock().unlock();
}
-
if (chunkMetadataList != null) {
printCacheLog(true);
cacheHitNum.incrementAndGet();
} else {
printCacheLog(false);
- // bloom filter part
TsFileSequenceReader tsFileReader = FileReaderManager.getInstance().get(filePath, true);
- BloomFilter bloomFilter = tsFileReader.readBloomFilter();
- if (bloomFilter != null && !bloomFilter.contains(seriesPath.getFullPath())) {
- return new ArrayList<>();
- }
- chunkMetadataList = FileLoaderUtils.getChunkMetadataList(seriesPath, filePath);
+ chunkMetadataList = tsFileReader.readChunkMetaDataList(timeseriesMetadata);
lock.writeLock().lock();
try {
lruCache.put(key, chunkMetadataList);
@@ -208,7 +196,8 @@ public class ChunkMetadataCache {
public void remove(TsFileResource resource) {
lock.writeLock().lock();
if (resource != null) {
- lruCache.entrySet().removeIf(e -> e.getKey().getString().startsWith(resource.getTsFilePath()));
+ lruCache.entrySet()
+ .removeIf(e -> e.getKey().getString().startsWith(resource.getTsFilePath()));
}
lock.writeLock().unlock();
}
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeFileTask.java b/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeFileTask.java
index 00f1235..eddc290 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeFileTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeFileTask.java
@@ -30,7 +30,10 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.iotdb.db.conf.IoTDBConstant;
+import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.cache.ChunkCache;
import org.apache.iotdb.db.engine.cache.ChunkMetadataCache;
+import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
import org.apache.iotdb.db.engine.merge.manage.MergeContext;
import org.apache.iotdb.db.engine.merge.manage.MergeResource;
import org.apache.iotdb.db.engine.merge.recover.MergeLogger;
@@ -318,6 +321,12 @@ class MergeFileTask {
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
+ // clean cache
+ if (IoTDBDescriptor.getInstance().getConfig().isMetaDataCacheEnable()) {
+ ChunkCache.getInstance().clear();
+ ChunkMetadataCache.getInstance().clear();
+ TimeSeriesMetadataCache.getInstance().clear();
+ }
seqFile.writeUnlock();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/tsfilemanagement/TsFileManagement.java b/server/src/main/java/org/apache/iotdb/db/engine/tsfilemanagement/TsFileManagement.java
index 8a581ee..7962aa1 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/tsfilemanagement/TsFileManagement.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/tsfilemanagement/TsFileManagement.java
@@ -29,6 +29,9 @@ import java.util.List;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.cache.ChunkCache;
+import org.apache.iotdb.db.engine.cache.ChunkMetadataCache;
+import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
import org.apache.iotdb.db.engine.merge.manage.MergeManager;
import org.apache.iotdb.db.engine.merge.manage.MergeResource;
import org.apache.iotdb.db.engine.merge.selector.IMergeFileSelector;
@@ -300,6 +303,12 @@ public abstract class TsFileManagement {
writeLock();
try {
removeAll(unseqFiles, false);
+ // clean cache
+ if (IoTDBDescriptor.getInstance().getConfig().isMetaDataCacheEnable()) {
+ ChunkCache.getInstance().clear();
+ ChunkMetadataCache.getInstance().clear();
+ TimeSeriesMetadataCache.getInstance().clear();
+ }
} finally {
writeUnlock();
mergeLock.writeLock().unlock();
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/DiskChunkMetadataLoader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/DiskChunkMetadataLoader.java
index 5e9de76..95466e9 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/DiskChunkMetadataLoader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/DiskChunkMetadataLoader.java
@@ -28,6 +28,7 @@ import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.reader.chunk.DiskChunkLoader;
import org.apache.iotdb.db.utils.QueryUtils;
import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
@@ -39,7 +40,8 @@ public class DiskChunkMetadataLoader implements IChunkMetadataLoader {
// time filter or value filter, only used to check time range
private Filter filter;
- public DiskChunkMetadataLoader(TsFileResource resource, PartialPath seriesPath, QueryContext context, Filter filter) {
+ public DiskChunkMetadataLoader(TsFileResource resource, PartialPath seriesPath,
+ QueryContext context, Filter filter) {
this.resource = resource;
this.seriesPath = seriesPath;
this.context = context;
@@ -47,9 +49,10 @@ public class DiskChunkMetadataLoader implements IChunkMetadataLoader {
}
@Override
- public List<ChunkMetadata> loadChunkMetadataList() throws IOException {
+ public List<ChunkMetadata> loadChunkMetadataList(TimeseriesMetadata timeseriesMetadata)
+ throws IOException {
List<ChunkMetadata> chunkMetadataList = ChunkMetadataCache
- .getInstance().get(resource.getTsFilePath(), seriesPath);
+ .getInstance().get(resource.getTsFilePath(), seriesPath, timeseriesMetadata);
setDiskChunkLoader(chunkMetadataList, resource, seriesPath, context);
@@ -57,15 +60,15 @@ public class DiskChunkMetadataLoader implements IChunkMetadataLoader {
* remove not satisfied ChunkMetaData
*/
chunkMetadataList.removeIf(chunkMetaData -> (filter != null && !filter
- .satisfyStartEndTime(chunkMetaData.getStartTime(), chunkMetaData.getEndTime()))
- || chunkMetaData.getStartTime() > chunkMetaData.getEndTime());
+ .satisfyStartEndTime(chunkMetaData.getStartTime(), chunkMetaData.getEndTime()))
+ || chunkMetaData.getStartTime() > chunkMetaData.getEndTime());
return chunkMetadataList;
}
/**
- * For query v0.9/v1 tsfile only
- * When generate temporary timeseriesMetadata
- * set DiskChunkLoader to each chunkMetadata in the List
+ * For query v0.9/v1 tsfile only When generate temporary timeseriesMetadata set DiskChunkLoader to
+ * each chunkMetadata in the List
+ *
* @param chunkMetadataList
* @throws IOException
*/
@@ -75,7 +78,7 @@ public class DiskChunkMetadataLoader implements IChunkMetadataLoader {
}
public static void setDiskChunkLoader(List<ChunkMetadata> chunkMetadataList,
- TsFileResource resource, PartialPath seriesPath, QueryContext context) {
+ TsFileResource resource, PartialPath seriesPath, QueryContext context) {
List<Modification> pathModifications =
context.getPathModifications(resource.getModFile(), seriesPath);
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemChunkMetadataLoader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemChunkMetadataLoader.java
index d71a370..ad2a4e3 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemChunkMetadataLoader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemChunkMetadataLoader.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.metadata.PartialPath;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
@@ -43,7 +44,7 @@ public class MemChunkMetadataLoader implements IChunkMetadataLoader {
}
@Override
- public List<ChunkMetadata> loadChunkMetadataList() {
+ public List<ChunkMetadata> loadChunkMetadataList(TimeseriesMetadata timeseriesMetadata) {
List<ChunkMetadata> chunkMetadataList = resource.getChunkMetadataList();
DiskChunkMetadataLoader.setDiskChunkLoader(chunkMetadataList, resource, seriesPath, context);
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCacheTest.java b/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCacheTest.java
index 4fea620..6608b95 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCacheTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkMetadataCacheTest.java
@@ -140,7 +140,7 @@ public class ChunkMetadataCacheTest {
Assert.assertTrue(unseqResources.get(2).isClosed());
List<ChunkMetadata> metaDataList = ChunkMetadataCache.getInstance()
- .get(seqResources.get(0).getTsFilePath(), new Path(storageGroup, measurementId5));
+ .get(seqResources.get(0).getTsFilePath(), new Path(storageGroup, measurementId5), null);
Assert.assertEquals(0, metaDataList.size());
}
@@ -161,7 +161,7 @@ public class ChunkMetadataCacheTest {
Assert.assertTrue(unseqResources.get(2).isClosed());
List<ChunkMetadata> metaDataList = ChunkMetadataCache.getInstance()
- .get(seqResources.get(0).getTsFilePath(), new Path(storageGroup, measurementId5));
+ .get(seqResources.get(0).getTsFilePath(), new Path(storageGroup, measurementId5), null);
Assert.assertEquals(0, metaDataList.size());
}
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTest.java b/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTest.java
index 9baeb48..ec0f773 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTest.java
@@ -19,10 +19,19 @@
package org.apache.iotdb.db.engine.merge;
+import static org.apache.iotdb.db.conf.IoTDBConstant.PATH_SEPARATOR;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.constant.TestConstant;
+import org.apache.iotdb.db.engine.cache.ChunkCache;
import org.apache.iotdb.db.engine.cache.ChunkMetadataCache;
+import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
import org.apache.iotdb.db.engine.merge.manage.MergeManager;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.exception.StorageEngineException;
@@ -43,14 +52,6 @@ import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
import org.junit.After;
import org.junit.Before;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static org.apache.iotdb.db.conf.IoTDBConstant.PATH_SEPARATOR;
-
abstract class MergeTest {
static final String MERGE_TEST_SG = "root.mergeTest";
@@ -88,7 +89,9 @@ abstract class MergeTest {
seqResources.clear();
unseqResources.clear();
IoTDBDescriptor.getInstance().getConfig().setChunkMergePointThreshold(prevMergeChunkThreshold);
+ ChunkCache.getInstance().clear();
ChunkMetadataCache.getInstance().clear();
+ TimeSeriesMetadataCache.getInstance().clear();
IoTDB.metaManager.clear();
EnvironmentUtils.cleanAllDir();
MergeManager.getINSTANCE().stop();
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBMergeTest.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBMergeTest.java
index 9a3f8a7..417eade 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBMergeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBMergeTest.java
@@ -20,7 +20,6 @@
package org.apache.iotdb.db.integration;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.sql.Connection;
diff --git a/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java b/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
index b434f2f..6d70b47 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
@@ -19,9 +19,19 @@
package org.apache.iotdb.db.query.reader.series;
+import static org.apache.iotdb.db.conf.IoTDBConstant.PATH_SEPARATOR;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.constant.TestConstant;
+import org.apache.iotdb.db.engine.cache.ChunkCache;
import org.apache.iotdb.db.engine.cache.ChunkMetadataCache;
+import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
import org.apache.iotdb.db.engine.merge.manage.MergeManager;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -38,15 +48,6 @@ import org.apache.iotdb.tsfile.write.record.TSRecord;
import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import java.io.File;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.iotdb.db.conf.IoTDBConstant.PATH_SEPARATOR;
-
public class SeriesReaderTestUtil {
private static int seqFileNum = 5;
@@ -71,7 +72,9 @@ public class SeriesReaderTestUtil {
removeFiles(seqResources, unseqResources);
seqResources.clear();
unseqResources.clear();
+ ChunkCache.getInstance().clear();
ChunkMetadataCache.getInstance().clear();
+ TimeSeriesMetadataCache.getInstance().clear();
IoTDB.metaManager.clear();
EnvironmentUtils.cleanAllDir();
MergeManager.getINSTANCE().stop();
diff --git a/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java b/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
index ce28130..b283e16 100644
--- a/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
+++ b/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
@@ -36,7 +36,9 @@ import org.apache.iotdb.db.conf.adapter.IoTDBConfigDynamicAdapter;
import org.apache.iotdb.db.conf.directories.DirectoryManager;
import org.apache.iotdb.db.constant.TestConstant;
import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.cache.ChunkCache;
import org.apache.iotdb.db.engine.cache.ChunkMetadataCache;
+import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
import org.apache.iotdb.db.exception.StorageEngineException;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.FileReaderManager;
@@ -58,17 +60,17 @@ public class EnvironmentUtils {
private static final Logger logger = LoggerFactory.getLogger(EnvironmentUtils.class);
- private static IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
- private static DirectoryManager directoryManager = DirectoryManager.getInstance();
+ private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
+ private static final DirectoryManager directoryManager = DirectoryManager.getInstance();
public static long TEST_QUERY_JOB_ID = 1;
public static QueryContext TEST_QUERY_CONTEXT = new QueryContext(TEST_QUERY_JOB_ID);
- private static long oldTsFileThreshold = config.getTsFileSizeThreshold();
+ private static final long oldTsFileThreshold = config.getTsFileSizeThreshold();
- private static int oldMaxMemTableNumber = config.getMaxMemtableNumber();
+ private static final int oldMaxMemTableNumber = config.getMaxMemtableNumber();
- private static long oldGroupSizeInByte = config.getMemtableSizeThreshold();
+ private static final long oldGroupSizeInByte = config.getMemtableSizeThreshold();
private static IoTDB daemon;
@@ -137,7 +139,9 @@ public class EnvironmentUtils {
// clean cache
if (config.isMetaDataCacheEnable()) {
+ ChunkCache.getInstance().clear();
ChunkMetadataCache.getInstance().clear();
+ TimeSeriesMetadataCache.getInstance().clear();
}
// close metadata
IoTDB.metaManager.clear();
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java
index ad8fc3f..0869643 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java
@@ -142,7 +142,7 @@ public class TimeseriesMetadata implements Accountable {
}
public List<ChunkMetadata> loadChunkMetadataList() throws IOException {
- return chunkMetadataLoader.loadChunkMetadataList();
+ return chunkMetadataLoader.loadChunkMetadataList(this);
}
public boolean isModified() {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java
index f80c42f..bbda4b8 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java
@@ -22,13 +22,15 @@ import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
import java.io.IOException;
import java.util.List;
+import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
public interface IChunkMetadataLoader {
/**
* read all chunk metadata of one time series in one file.
*/
- List<ChunkMetadata> loadChunkMetadataList() throws IOException;
+ List<ChunkMetadata> loadChunkMetadataList(TimeseriesMetadata timeseriesMetadata)
+ throws IOException;
/**
* For query 0.9/v1 tsfile only