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/incubator-iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new d33366e [IOTDB-641] Remove TsFileMetadataCache (#1160)
d33366e is described below
commit d33366ef967d53dc52910a30892eafd8f5e47278
Author: Haonan <[email protected]>
AuthorDate: Thu May 7 11:38:50 2020 +0800
[IOTDB-641] Remove TsFileMetadataCache (#1160)
* Remove TsFileMetadataCache
---
.../resources/conf/iotdb-engine.properties | 8 +-
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 12 --
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 14 +-
.../db/engine/cache/CacheHitRatioMonitor.java | 6 -
.../engine/cache/CacheHitRatioMonitorMXBean.java | 2 -
.../iotdb/db/engine/cache/ChunkMetadataCache.java | 10 +-
.../db/engine/cache/TimeSeriesMetadataCache.java | 11 +-
.../iotdb/db/engine/cache/TsFileMetaDataCache.java | 174 ---------------------
.../iotdb/db/engine/merge/task/MergeFileTask.java | 3 -
.../apache/iotdb/db/engine/merge/MergeTest.java | 2 -
.../query/reader/series/SeriesReaderTestUtil.java | 3 -
.../apache/iotdb/db/utils/EnvironmentUtils.java | 3 -
.../apache/iotdb/spark/db/EnvironmentUtils.java | 2 -
.../iotdb/tsfile/read/TsFileSequenceReader.java | 11 ++
14 files changed, 29 insertions(+), 232 deletions(-)
diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties
b/server/src/assembly/resources/conf/iotdb-engine.properties
index db50739..e4654cd 100644
--- a/server/src/assembly/resources/conf/iotdb-engine.properties
+++ b/server/src/assembly/resources/conf/iotdb-engine.properties
@@ -304,11 +304,11 @@ chunk_merge_point_threshold=20480
### Metadata Cache Configuration
####################
-# whether to cache meta data(ChunkMetaData and TsFileMetaData) or not.
+# whether to cache meta data(ChunkMetadata and TimeSeriesMetadata) or not.
meta_data_cache_enable=true
-# Read memory Allocation Ratio: FileMetaDataCache, ChunkMetaDataCache,
ChunkCache, TimeSeriesMetadataCache and Free Memory Used in Query.
-# The parameter form is a:b:c:d:e, where a, b, c, d and e are integers. for
example: 1:1:1:1:1 , 3:6:10:5:15
-filemeta_chunkmeta_chunk_free_memory_proportion=5:3:3:10:12
+# Read memory Allocation Ratio: ChunkMetadataCache, ChunkCache,
TimeSeriesMetadataCache and Free Memory Used in Query.
+# The parameter form is a:b:c:d, where a, b, c and d are integers. for
example: 1:1:1:1 , 6:10:5:15
+chunkmeta_chunk_timeseriesmeta_free_memory_proportion=3:3:10:12
# cache size for MManager.
# This cache is used to improve insert speed where all path check and
TSDataType will be cached in MManager with corresponding Path.
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 1c42f0f..51bb3fc 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -239,10 +239,6 @@ public class IoTDBConfig {
* whether to cache meta data(ChunkMetaData and TsFileMetaData) or not.
*/
private boolean metaDataCacheEnable = true;
- /**
- * Memory allocated for fileMetaData cache in read process
- */
- private long allocateMemoryForFileMetaDataCache = allocateMemoryForRead * 7
/ 39;
/**
* Memory allocated for timeSeriesMetaData cache in read process
@@ -1132,14 +1128,6 @@ public class IoTDBConfig {
this.metaDataCacheEnable = metaDataCacheEnable;
}
- public long getAllocateMemoryForFileMetaDataCache() {
- return allocateMemoryForFileMetaDataCache;
- }
-
- void setAllocateMemoryForFileMetaDataCache(long
allocateMemoryForFileMetaDataCache) {
- this.allocateMemoryForFileMetaDataCache =
allocateMemoryForFileMetaDataCache;
- }
-
public long getAllocateMemoryForTimeSeriesMetaDataCache() {
return allocateMemoryForTimeSeriesMetaDataCache;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 0e0a1ad..4389fa8 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -621,7 +621,7 @@ public class IoTDBDescriptor {
}
String queryMemoryAllocateProportion = properties
- .getProperty("filemeta_chunkmeta_chunk_free_memory_proportion");
+ .getProperty("chunkmeta_chunk_timeseriesmeta_free_memory_proportion");
if (queryMemoryAllocateProportion != null) {
String[] proportions = queryMemoryAllocateProportion.split(":");
int proportionSum = 0;
@@ -630,18 +630,16 @@ public class IoTDBDescriptor {
}
long maxMemoryAvailable = conf.getAllocateMemoryForRead();
try {
- conf.setAllocateMemoryForFileMetaDataCache(
- maxMemoryAvailable * Integer.parseInt(proportions[0].trim()) /
proportionSum);
conf.setAllocateMemoryForChunkMetaDataCache(
- maxMemoryAvailable * Integer.parseInt(proportions[1].trim()) /
proportionSum);
+ maxMemoryAvailable * Integer.parseInt(proportions[0].trim()) /
proportionSum);
conf.setAllocateMemoryForChunkCache(
- maxMemoryAvailable * Integer.parseInt(proportions[2].trim()) /
proportionSum);
+ maxMemoryAvailable * Integer.parseInt(proportions[1].trim()) /
proportionSum);
conf.setAllocateMemoryForTimeSeriesMetaDataCache(
- maxMemoryAvailable * Integer.parseInt(proportions[3].trim()) /
proportionSum);
+ maxMemoryAvailable * Integer.parseInt(proportions[2].trim()) /
proportionSum);
} catch (Exception e) {
throw new RuntimeException(
- "Each subsection of configuration item
filemeta_chunkmeta_free_memory_proportion should be an"
- + " integer, which is "
+ "Each subsection of configuration item
chunkmeta_chunk_timeseriesmeta_free_memory_proportion"
+ + " should be an integer, which is "
+ queryMemoryAllocateProportion);
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitor.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitor.java
index 457cc8a..3d5f4f5 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitor.java
@@ -61,12 +61,6 @@ public class CacheHitRatioMonitor implements
CacheHitRatioMonitorMXBean, IServic
}
@Override
- public double getTsfileMetaDataHitRatio() {
- tsfileMetaDataHitRatio =
TsFileMetaDataCache.getInstance().calculateTsFileMetaDataHitRatio();
- return tsfileMetaDataHitRatio;
- }
-
- @Override
public double getChunkHitRatio() {
return ChunkCache.getInstance().calculateChunkHitRatio();
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitorMXBean.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitorMXBean.java
index f546ef0..644374d 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitorMXBean.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/cache/CacheHitRatioMonitorMXBean.java
@@ -22,8 +22,6 @@ public interface CacheHitRatioMonitorMXBean {
double getChunkMetaDataHitRatio();
- double getTsfileMetaDataHitRatio();
-
double getChunkHitRatio();
double getTimeSeriesMetadataHitRatio();
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 3ed15cb..2e8f294 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
@@ -32,7 +32,6 @@ 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.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.utils.BloomFilter;
@@ -102,8 +101,8 @@ public class ChunkMetadataCache {
throws IOException {
if (!cacheEnable) {
// bloom filter part
- TsFileMetadata fileMetaData =
TsFileMetaDataCache.getInstance().get(filePath);
- BloomFilter bloomFilter = fileMetaData.getBloomFilter();
+ TsFileSequenceReader tsFileReader =
FileReaderManager.getInstance().get(filePath, true);
+ BloomFilter bloomFilter = tsFileReader.readBloomFilter();
if (bloomFilter != null &&
!bloomFilter.contains(seriesPath.getFullPath())) {
if (logger.isDebugEnabled()) {
logger.debug(String
@@ -112,7 +111,6 @@ public class ChunkMetadataCache {
return new ArrayList<>();
}
// If timeseries isn't included in the tsfile, empty list is returned.
- TsFileSequenceReader tsFileReader =
FileReaderManager.getInstance().get(filePath, true);
return tsFileReader.getChunkMetadataList(seriesPath);
}
@@ -141,8 +139,8 @@ public class ChunkMetadataCache {
}
printCacheLog(false);
// bloom filter part
- TsFileMetadata fileMetaData =
TsFileMetaDataCache.getInstance().get(filePath);
- BloomFilter bloomFilter = fileMetaData.getBloomFilter();
+ TsFileSequenceReader tsFileReader =
FileReaderManager.getInstance().get(filePath, true);
+ BloomFilter bloomFilter = tsFileReader.readBloomFilter();
if (bloomFilter != null &&
!bloomFilter.contains(seriesPath.getFullPath())) {
return new ArrayList<>();
}
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 e620cd1..ccd430f 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
@@ -31,7 +31,6 @@ import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.query.control.FileReaderManager;
import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.utils.BloomFilter;
@@ -91,13 +90,12 @@ public class TimeSeriesMetadataCache {
throws IOException {
if (!cacheEnable) {
// bloom filter part
- TsFileMetadata fileMetaData =
TsFileMetaDataCache.getInstance().get(key.filePath);
- BloomFilter bloomFilter = fileMetaData.getBloomFilter();
+ TsFileSequenceReader reader =
FileReaderManager.getInstance().get(key.filePath, true);
+ BloomFilter bloomFilter = reader.readBloomFilter();
if (bloomFilter != null && !bloomFilter
.contains(key.device + IoTDBConstant.PATH_SEPARATOR +
key.measurement)) {
return null;
}
- TsFileSequenceReader reader =
FileReaderManager.getInstance().get(key.filePath, true);
return reader.readTimeseriesMetadata(new Path(key.device,
key.measurement));
}
@@ -123,13 +121,12 @@ public class TimeSeriesMetadataCache {
}
printCacheLog(false);
// bloom filter part
- TsFileMetadata fileMetaData =
TsFileMetaDataCache.getInstance().get(key.filePath);
- BloomFilter bloomFilter = fileMetaData.getBloomFilter();
+ TsFileSequenceReader reader =
FileReaderManager.getInstance().get(key.filePath, true);
+ BloomFilter bloomFilter = reader.readBloomFilter();
if (bloomFilter != null && !bloomFilter
.contains(key.device + IoTDBConstant.PATH_SEPARATOR +
key.measurement)) {
return null;
}
- TsFileSequenceReader reader =
FileReaderManager.getInstance().get(key.filePath, true);
List<TimeseriesMetadata> timeSeriesMetadataList = reader
.readTimeseriesMetadata(key.device, allSensors);
// put TimeSeriesMetadata of all sensors used in this query into cache
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/cache/TsFileMetaDataCache.java
b/server/src/main/java/org/apache/iotdb/db/engine/cache/TsFileMetaDataCache.java
deleted file mode 100644
index ec59e95..0000000
---
a/server/src/main/java/org/apache/iotdb/db/engine/cache/TsFileMetaDataCache.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.engine.cache;
-
-import java.io.IOException;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import org.apache.iotdb.db.conf.IoTDBConfig;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.utils.FileLoaderUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class is used to cache <code>TsFileMetaData</code> of tsfile in IoTDB.
- */
-public class TsFileMetaDataCache {
-
- private static final Logger logger =
LoggerFactory.getLogger(TsFileMetaDataCache.class);
- private static final IoTDBConfig config =
IoTDBDescriptor.getInstance().getConfig();
-
- private static boolean cacheEnable = config.isMetaDataCacheEnable();
- private static final long MEMORY_THRESHOLD_IN_B =
config.getAllocateMemoryForFileMetaDataCache();
-
- /**
- * TsFile path -> TsFileMetaData
- */
- private final LRULinkedHashMap<String, TsFileMetadata> cache;
- private final ReadWriteLock lock = new ReentrantReadWriteLock();
-
- private AtomicLong cacheHitNum = new AtomicLong();
- private AtomicLong cacheRequestNum = new AtomicLong();
-
- /**
- * estimated size of metadataIndex entry in TsFileMetaData.
- */
- private long metadataIndexEntrySize = 0;
-
- private TsFileMetaDataCache() {
- logger.info("TsFileMetaDataCache size = " + MEMORY_THRESHOLD_IN_B);
- cache = new LRULinkedHashMap<String,
TsFileMetadata>(MEMORY_THRESHOLD_IN_B, true) {
- @Override
- protected long calEntrySize(String key, TsFileMetadata value) {
- if (metadataIndexEntrySize == 0 && value.getMetadataIndex() != null
- && !value.getMetadataIndex().getChildren().isEmpty()) {
- metadataIndexEntrySize = RamUsageEstimator
-
.sizeOf(value.getMetadataIndex().getChildren().iterator().next());
- }
- // totalChunkNum, invalidChunkNum
- long valueSize = 4 + 4L;
-
- // metadataIndex
- if (value.getMetadataIndex() != null) {
- valueSize += value.getMetadataIndex().getChildren().size() *
metadataIndexEntrySize;
- }
-
- // versionInfo
- if (value.getVersionInfo() != null) {
- valueSize += value.getVersionInfo().size() * 16;
- }
- return key.getBytes(TSFileConfig.STRING_CHARSET).length + valueSize;
- }
- };
- }
-
- public static TsFileMetaDataCache getInstance() {
- return TsFileMetaDataCacheHolder.INSTANCE;
- }
-
- /**
- * get the TsFileMetaData for given TsFile.
- *
- * @param filePath -given TsFile
- */
- public TsFileMetadata get(String filePath) throws IOException {
- if (!cacheEnable) {
- return FileLoaderUtils.getTsFileMetadata(filePath);
- }
-
- cacheRequestNum.incrementAndGet();
-
- lock.readLock().lock();
- try {
- if (cache.containsKey(filePath)) {
- cacheHitNum.incrementAndGet();
- printCacheLog(true);
- return cache.get(filePath);
- }
- } finally {
- lock.readLock().unlock();
- }
-
- lock.writeLock().lock();
- try {
- if (cache.containsKey(filePath)) {
- cacheHitNum.incrementAndGet();
- printCacheLog(true);
- return cache.get(filePath);
- }
- printCacheLog(false);
- TsFileMetadata fileMetaData =
FileLoaderUtils.getTsFileMetadata(filePath);
- cache.put(filePath, fileMetaData);
- return fileMetaData;
- } finally {
- lock.writeLock().unlock();
- }
- }
-
- private void printCacheLog(boolean isHit) {
- if (!logger.isDebugEnabled()) {
- return;
- }
- if (isHit) {
- logger.debug(
- "[TsFileMetaData cache hit] The number of requests for cache is {},
hit rate is {}.",
- cacheRequestNum.get(), cacheHitNum.get() * 1.0 /
cacheRequestNum.get());
- } else {
- logger.debug(
- "[TsFileMetaData cache didn't hit] The number of requests for cache
is {}, hit rate is {}.",
- cacheRequestNum.get(), cacheHitNum.get() * 1.0 /
cacheRequestNum.get());
- }
- }
-
- double calculateTsFileMetaDataHitRatio() {
- if (cacheRequestNum.get() != 0) {
- return cacheHitNum.get() * 1.0 / cacheRequestNum.get();
- } else {
- return 0;
- }
- }
-
- public void remove(TsFileResource resource) {
- synchronized (cache) {
- cache.remove(resource.getPath());
- }
- }
-
- public void clear() {
- synchronized (cache) {
- cache.clear();
- }
- }
-
- /**
- * Singleton pattern
- */
- private static class TsFileMetaDataCacheHolder {
-
- private TsFileMetaDataCacheHolder() {
- }
-
- private static final TsFileMetaDataCache INSTANCE = new
TsFileMetaDataCache();
- }
-}
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 b6a5778..006ec5c 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,6 @@ import java.util.Map.Entry;
import java.util.Set;
import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.engine.cache.ChunkMetadataCache;
-import org.apache.iotdb.db.engine.cache.TsFileMetaDataCache;
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;
@@ -124,7 +123,6 @@ class MergeFileTask {
seqFile.getWriteQueryLock().writeLock().lock();
try {
- TsFileMetaDataCache.getInstance().remove(seqFile);
ChunkMetadataCache.getInstance().remove(seqFile);
FileReaderManager.getInstance().closeFileAndRemoveReader(seqFile.getPath());
@@ -262,7 +260,6 @@ class MergeFileTask {
seqFile.getWriteQueryLock().writeLock().lock();
try {
resource.removeFileReader(seqFile);
- TsFileMetaDataCache.getInstance().remove(seqFile);
ChunkMetadataCache.getInstance().remove(seqFile);
FileReaderManager.getInstance().closeFileAndRemoveReader(seqFile.getPath());
seqFile.getFile().delete();
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 f626830..55cee97 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
@@ -30,7 +30,6 @@ 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.ChunkMetadataCache;
-import org.apache.iotdb.db.engine.cache.TsFileMetaDataCache;
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;
@@ -87,7 +86,6 @@ abstract class MergeTest {
seqResources.clear();
unseqResources.clear();
IoTDBDescriptor.getInstance().getConfig().setChunkMergePointThreshold(prevMergeChunkThreshold);
- TsFileMetaDataCache.getInstance().clear();
ChunkMetadataCache.getInstance().clear();
MManager.getInstance().clear();
EnvironmentUtils.cleanAllDir();
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 74689eb..58177fd 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
@@ -31,7 +31,6 @@ 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.ChunkMetadataCache;
-import org.apache.iotdb.db.engine.cache.TsFileMetaDataCache;
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;
@@ -43,7 +42,6 @@ import
org.apache.iotdb.tsfile.exception.write.WriteProcessException;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
import org.apache.iotdb.tsfile.write.TsFileWriter;
import org.apache.iotdb.tsfile.write.record.TSRecord;
import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
@@ -73,7 +71,6 @@ public class SeriesReaderTestUtil {
removeFiles(seqResources, unseqResources);
seqResources.clear();
unseqResources.clear();
- TsFileMetaDataCache.getInstance().clear();
ChunkMetadataCache.getInstance().clear();
MManager.getInstance().clear();
EnvironmentUtils.cleanAllDir();
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 94b5e73..d64a8b3 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
@@ -31,14 +31,12 @@ import org.apache.commons.io.FileUtils;
import org.apache.iotdb.db.auth.AuthException;
import org.apache.iotdb.db.auth.authorizer.LocalFileAuthorizer;
import org.apache.iotdb.db.conf.IoTDBConfig;
-import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
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.ChunkMetadataCache;
-import org.apache.iotdb.db.engine.cache.TsFileMetaDataCache;
import org.apache.iotdb.db.exception.StorageEngineException;
import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.query.context.QueryContext;
@@ -134,7 +132,6 @@ public class EnvironmentUtils {
// clean cache
if (config.isMetaDataCacheEnable()) {
- TsFileMetaDataCache.getInstance().clear();
ChunkMetadataCache.getInstance().clear();
}
// close metadata
diff --git
a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
index 9843d26..e05e7d9 100644
---
a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
+++
b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
@@ -35,7 +35,6 @@ import
org.apache.iotdb.db.conf.adapter.IoTDBConfigDynamicAdapter;
import org.apache.iotdb.db.conf.directories.DirectoryManager;
import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.engine.cache.ChunkMetadataCache;
-import org.apache.iotdb.db.engine.cache.TsFileMetaDataCache;
import org.apache.iotdb.db.engine.flush.FlushManager;
import org.apache.iotdb.db.exception.StartupException;
import org.apache.iotdb.db.exception.StorageEngineException;
@@ -121,7 +120,6 @@ public class EnvironmentUtils {
MultiFileLogNodeManager.getInstance().stop();
// clean cache
if (config.isMetaDataCacheEnable()) {
- TsFileMetaDataCache.getInstance().clear();
ChunkMetadataCache.getInstance().clear();
}
// close metadata
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
index efb5c31..0bd8e92 100644
---
a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
+++
b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
@@ -56,6 +56,7 @@ import org.apache.iotdb.tsfile.read.common.Chunk;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.controller.MetadataQuerierByFileImpl;
import org.apache.iotdb.tsfile.read.reader.TsFileInput;
+import org.apache.iotdb.tsfile.utils.BloomFilter;
import org.apache.iotdb.tsfile.utils.Pair;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import org.apache.iotdb.tsfile.utils.VersionUtils;
@@ -263,6 +264,16 @@ public class TsFileSequenceReader implements AutoCloseable
{
}
/**
+ * this function does not modify the position of the file reader.
+ *
+ * @throws IOException io error
+ */
+ public BloomFilter readBloomFilter() throws IOException {
+ readFileMetadata();
+ return tsFileMetaData.getBloomFilter();
+ }
+
+ /**
* this function reads measurements and TimeseriesMetaDatas in given device
Thread Safe
*
* @param device name