8.0.0 (02/19/2023)
Behavior changes
ReadOptions::verify_checksums=falsedisables checksum verification for more reads of non-CacheEntryRole::kDataBlockblocks.- In case of scan with async_io enabled, if posix doesn't support IOUring, Status::NotSupported error will be returned to the users. Initially that error was swallowed and reads were switched to synchronous reads.
Bug Fixes
- Fixed a data race on
ColumnFamilyData::flush_reasoncaused by concurrent flushes. - Fixed an issue in
GetandMultiGetwhen user-defined timestamps is enabled in combination with BlobDB. - Fixed some atypical behaviors for
LockWAL()such as allowing concurrent/recursive use and not expectingUnlockWAL()after non-OK result. See API comments. - Fixed a feature interaction bug where for blobs
GetEntitywould expose the blob reference instead of the blob value. - Fixed
DisableManualCompaction()andCompactRangeOptions::canceledto cancel compactions even when they are waiting on conflicting compactions to finish - Fixed a bug in which a successful
GetMergeOperands()could transiently returnStatus::MergeInProgress() - Return the correct error (Status::NotSupported()) to MultiGet caller when ReadOptions::async_io flag is true and IO uring is not enabled. Previously, Status::Corruption() was being returned when the actual failure was lack of async IO support.
- Fixed a bug in DB open/recovery from a compressed WAL that was caused due to incorrect handling of certain record fragments with the same offset within a WAL block.
Feature Removal
- Remove RocksDB Lite.
- The feature block_cache_compressed is removed. Statistics related to it are removed too.
- Remove deprecated Env::LoadEnv(). Use Env::CreateFromString() instead.
- Remove deprecated FileSystem::Load(). Use FileSystem::CreateFromString() instead.
- Removed the deprecated version of these utility functions and the corresponding Java bindings:
LoadOptionsFromFile,LoadLatestOptions,CheckOptionsCompatibility. - Remove the FactoryFunc from the LoadObject method from the Customizable helper methods.
Public API Changes
- Moved rarely-needed Cache class definition to new advanced_cache.h, and added a CacheWrapper class to advanced_cache.h. Minor changes to SimCache API definitions.
- Completely removed the following deprecated/obsolete statistics: the tickers
BLOCK_CACHE_INDEX_BYTES_EVICT,BLOCK_CACHE_FILTER_BYTES_EVICT,BLOOM_FILTER_MICROS,NO_FILE_CLOSES,STALL_L0_SLOWDOWN_MICROS,STALL_MEMTABLE_COMPACTION_MICROS,STALL_L0_NUM_FILES_MICROS,RATE_LIMIT_DELAY_MILLIS,NO_ITERATORS,NUMBER_FILTERED_DELETES,WRITE_TIMEDOUT,BLOB_DB_GC_NUM_KEYS_OVERWRITTEN,BLOB_DB_GC_NUM_KEYS_EXPIRED,BLOB_DB_GC_BYTES_OVERWRITTEN,BLOB_DB_GC_BYTES_EXPIRED,BLOCK_CACHE_COMPRESSION_DICT_BYTES_EVICTas well as the histogramsSTALL_L0_SLOWDOWN_COUNT,STALL_MEMTABLE_COMPACTION_COUNT,STALL_L0_NUM_FILES_COUNT,HARD_RATE_LIMIT_DELAY_COUNT,SOFT_RATE_LIMIT_DELAY_COUNT,BLOB_DB_GC_MICROS, andNUM_DATA_BLOCKS_READ_PER_LEVEL. Note that as a result, the C++ enum values of the still supported statistics have changed. Developers are advised to not rely on the actual numeric values. - Deprecated IngestExternalFileOptions::write_global_seqno and change default to false. This option only needs to be set to true to generate a DB compatible with RocksDB versions before 5.16.0.
- Remove deprecated APIs
GetColumnFamilyOptionsFrom{Map|String}(const ColumnFamilyOptions&, ..),GetDBOptionsFrom{Map|String}(const DBOptions&, ..),GetBlockBasedTableOptionsFrom{Map|String}(const BlockBasedTableOptions& table_options, ..)andGetPlainTableOptionsFrom{Map|String}(const PlainTableOptions& table_options,..). - Added a subcode of
Status::Corruption,Status::SubCode::kMergeOperatorFailed, for users to identify corruption failures originating in the merge operator, as opposed to RocksDB's internally identified data corruptions
Build Changes
- The
makebuild now builds a shared library by default instead of a static library. UseLIB_MODE=staticto override.
New Features
- Compaction filters are now supported for wide-column entities by means of the
FilterV3API. See the comment of the API for more details. - Added
do_not_compress_rolestoCompressedSecondaryCacheOptionsto disable compression on certain kinds of block. Filter blocks are now not compressed by CompressedSecondaryCache by default. - Added a new
MultiGetEntityAPI that enables batched wide-column point lookups. See the API comments for more details.