This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
Summary
AI summaryPublic API changes break existing implementations by switching to PinnableSlice, bug fixes prevent SST file deletion on close and address IODispatcher memory leaks, and new features add async file opening, adaptive index search, write‑buffer enforcement, memtable batch lookup optimization, block‑cache prepopulation control, and manifest verification.
Full changelog
11.1.2 (06/24/2026)
Bug Fixes
- Fixed a bug where closing a read-only DB instance could delete live SST files created by a concurrent read-write DB sharing the same directory.
11.1.1 (04/10/2026)
Public API Changes
- Changed experimental feature
ExternalTableReader::GetandExternalTableReader::MultiGetto usePinnableSliceinstead ofstd::stringfor output values, enabling zero-copy pinning. This will break existing implementations. - Added
SstFileReader::GetandSstFileReader::MultiGetoverloads that acceptPinnableSlice/std::vector<PinnableSlice>*, enabling zero-copy reads when the underlyingTableReadersupports pinning. - Added block_decompress_count to PerfContext
Bug Fixes
- Fix a memory accounting leak in IODispatcher where ReadIndex() moved block values out of ReadSet without releasing the associated prefetch memory, causing subsequent prefetches to be blocked when max_prefetch_memory_bytes was set.
11.1.0 (03/23/2026)
New Features
- Add a new option
open_files_async. The existing behavior is on DB open, we open all sst files and do basic validations. For very large DBs on remote filesystems with many ssts, this may take very long. This option performs these validations instead in the background. Open errors found by this async background task are surfaced as a new background error kAsyncFileOpen. - Added
BlockBasedTableOptions::kAutoindex block search type that automatically selects between binary and interpolation search on a per-index-block basis. During SST construction, each index block's key distribution uniformity is analyzed using the coefficient of variation of key gaps, and index blocks with uniform keys use interpolation search while others fall back to binary search. The uniformity threshold is configurable viaBlockBasedTableOptions::uniform_cv_threshold(default: 0.2). - Introduced enforce_write_buffer_manager_during_recovery option to allow WriteBufferManager to be enforced during WAL recovery. (Default: true)
- Add
memtable_batch_lookup_optimizationoption to use batch lookup optimization for memtable MultiGet. For skip list memtables, after each key lookup, the search path is cached and reused for the next key, reducing per-key cost from O(log N) to O(log d) where d is the distance between consecutive keys. Benchmarks show ~7% improvement in memtable-resident MultiGet throughput. - Added
BlockBasedTableOptions::PrepopulateBlockCache::kFlushAndCompactionto prepopulate the block cache during both flush and compaction. Compaction-warmed blocks are inserted atBOTTOMpriority (vsLOWfor flush) so they are evicted first under cache pressure. Recommended only for use cases where most or all of the database is expected to reside in cache (e.g., tiered or remote storage where the working set fits in cache). - Added new mutable DB option
verify_manifest_content_on_close(default: false). When enabled, on DB close the MANIFEST file is read back and all records are validated (CRC checksums and logical content). If corruption is detected, a fresh MANIFEST is written from in-memory state.
Breaking Changes
- Changed `ExternalTableReader::Get` and `ExternalTableReader::MultiGet` to use `PinnableSlice` instead of `std::string`, breaking existing implementations.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About rocksdb
A library that provides an embeddable, persistent key-value store for fast storage.
Related context
Related tools
Beta — feedback welcome: [email protected]