[Bug] Bitmap benchmarks do not close seekable input streams
- Dominant language
- Java
- Stars
- 3.4k
- Forks
- 1.4k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 396
Description
**Search before asking**
- [x] I searched in the [issues](https://github.com/apache/paimon/issues) and found nothing similar.
**Paimon version**
master @ 345526e26 (2.0-SNAPSHOT)
**Compute Engine**
Engine-agnostic (benchmark module, `paimon-benchmark/paimon-micro-benchmarks`)
**Minimal reproduce step**
Read these five benchmark cases in the `benchmark/bitmap` package:
- `RoaringBitmapBenchmark.testDeserialize()`, case `deserialize(DataInputStream(BufferedInputStream))`
- `BitmapIndexBenchmark.query()`
- `RangeBitmapIndexBenchmark.queryBsi()` / `queryBitmap()` / `queryRangeBitmap()`
Each opens a `LocalFileIO.LocalSeekableInputStream` inside the case body and never closes it. Nothing downstream closes it either: `FileIndexReader` implementations do not close the stream they are created from.
**What doesn't meet your expectations?**
The streams should be released deterministically once the case body ends.
- The other three cases in the same method `RoaringBitmapBenchmark.testDeserialize()` already wrap the stream in try-with-resources; only the second case does not.
- `LocalFileIO.LocalSeekableInputStream.close()` closes the underlying `FileInputStream`, so skipping it leaves release to the GC.
**Anything else?**
Fix is to wrap the five sites in try-with-resources. The measured logic (deserialization, index lookup) stays the same.
**Are you willing to submit a PR?**
- [x] I'm willing to submit a PR!
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in the benchmark/bitmap package with RoaringBitmapBenchmark.testDeserialize(), BitmapIndexBenchmark.query(), and RangeBitmapIndexBenchmark.queryBsi(), queryBitmap(), and queryRangeBitmap(). Compare the five sites with the existing try-with-resources cases, then run the bitmap benchmarks or relevant benchmark tests. Done means each opened LocalFileIO.LocalSeekableInputStream is closed while the measured logic remains unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- performance
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 84/100