This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch mem_usage_refinement in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit 5f7f9ef18f7bfffe9437a0708364db4b7ac97243 Author: Tian Jiang <[email protected]> AuthorDate: Tue Apr 22 14:56:52 2025 +0800 fix bloom filter --- java/tsfile/src/main/java/org/apache/tsfile/utils/BloomFilter.java | 6 +++++- .../test/java/org/apache/tsfile/read/TsFileSequenceReaderTest.java | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/java/tsfile/src/main/java/org/apache/tsfile/utils/BloomFilter.java b/java/tsfile/src/main/java/org/apache/tsfile/utils/BloomFilter.java index d4a0f9f5..3f10f5b5 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/utils/BloomFilter.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/utils/BloomFilter.java @@ -172,6 +172,9 @@ public class BloomFilter { if (!useCheapHash) { ret = bits.get(hash(value.getFullPath(), size, SEEDS[index++])); } else { + if (!(value instanceof FullPath)) { + value = new FullPath(value.getIDeviceID(), value.getMeasurement()); + } ret = bits.get(hash(value, size, SEEDS[index++])); } } @@ -179,6 +182,7 @@ public class BloomFilter { return ret; } + @Deprecated public boolean contains(String value) { if (value == null) { return false; @@ -264,7 +268,7 @@ public class BloomFilter { if (bytes.length != 0) { int filterSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer); int hashFunctionSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer); - if (hashFunctionSize != Integer.MIN_VALUE) { + if (hashFunctionSize != Integer.MAX_VALUE) { return BloomFilter.buildBloomFilter(bytes, filterSize, hashFunctionSize); } else { hashFunctionSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileSequenceReaderTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileSequenceReaderTest.java index 854e80ac..7deb073b 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileSequenceReaderTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileSequenceReaderTest.java @@ -34,6 +34,7 @@ import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.IDeviceID.Factory; import org.apache.tsfile.file.metadata.TableSchema; import org.apache.tsfile.file.metadata.enums.TSEncoding; +import org.apache.tsfile.read.common.FullPath; import org.apache.tsfile.read.common.Path; import org.apache.tsfile.utils.BloomFilter; import org.apache.tsfile.utils.FileGenerator; @@ -188,7 +189,7 @@ public class TsFileSequenceReaderTest { TsFileSequenceReader reader = new TsFileSequenceReader(testFile.getAbsolutePath()); BloomFilter bloomFilter = reader.readBloomFilter(); assertNotNull(bloomFilter); - assertTrue(bloomFilter.contains(deviceID.toString() + ".s")); + assertTrue(bloomFilter.contains(new FullPath(deviceID, "s"))); assertFalse( bloomFilter.contains(Factory.DEFAULT_FACTORY.create("root.topic2").toString() + ".s")); }
