6.28.2 (2022-01-31)
Bug Fixes
- Fixed a major bug in which batched MultiGet could return old values for keys deleted by DeleteRange when memtable Bloom filter is enabled (memtable_prefix_bloom_size_ratio > 0). (The fix includes a substantial MultiGet performance improvement in the unusual case of both memtable_whole_key_filtering and prefix_extractor.)
6.28.1 (2022-01-10)
Bug Fixes
- Fixed compilation errors on newer compiler, e.g. clang-12
6.28.0 (2021-12-17)
New Features
- Introduced 'CommitWithTimestamp' as a new tag. Currently, there is no API for user to trigger a write with this tag to the WAL. This is part of the efforts to support write-commited transactions with user-defined timestamps.
Bug Fixes
- Fixed a bug in rocksdb automatic implicit prefetching which got broken because of new feature adaptive_readahead and internal prefetching got disabled when iterator moves from one file to next.
- Fixed a bug in TableOptions.prepopulate_block_cache which causes segmentation fault when used with TableOptions.partition_filters = true and TableOptions.cache_index_and_filter_blocks = true.
- Fixed a bug affecting custom memtable factories which are not registered with the
ObjectRegistry
. The bug could result in failure to save the OPTIONS file. - Fixed a bug causing two duplicate entries to be appended to a file opened in non-direct mode and tracked by
FaultInjectionTestFS
. - Fixed a bug in TableOptions.prepopulate_block_cache to support block-based filters also.
- Block cache keys no longer use
FSRandomAccessFile::GetUniqueId()
(previously used when available), so a filesystem recycling unique ids can no longer lead to incorrect result or crash (#7405). For files generated by RocksDB >= 6.24, the cache keys are stable across DB::Open and DB directory move / copy / import / export / migration, etc. Although collisions are still theoretically possible, they are (a) impossible in many common cases, (b) not dependent on environmental factors, and (c) much less likely than a CPU miscalculation while executing RocksDB.
Behavior Changes
- MemTableList::TrimHistory now use allocated bytes when max_write_buffer_size_to_maintain > 0(default in TrasactionDB, introduced in PR#5022) Fix #8371.
Public API change
- Extend WriteBatch::AssignTimestamp and AssignTimestamps API so that both functions can accept an optional
checker
argument that performs additional checking on timestamp sizes. - Introduce a new EventListener callback that will be called upon the end of automatic error recovery.
Performance Improvements
- Replaced map property
TableProperties::properties_offsets
with uint64_t propertyexternal_sst_file_global_seqno_offset
to save table properties's memory. - Block cache accesses are faster by RocksDB using cache keys of fixed size (16 bytes).
Java API Changes
- Removed Java API
TableProperties.getPropertiesOffsets()
as it exposed internal details to external users.