8.8.1 (2023-11-17)
Bug fixes
- Make the cache memory reservation accounting in Tiered cache (primary and compressed secondary cache) more accurate to avoid over/under charging the secondary cache.
- Allow increasing the compressed_secondary_ratio in the Tiered cache after setting it to 0 to disable.
8.8.0 (2023-10-23)
New Features
- Introduce AttributeGroup by adding the first AttributeGroup support API, MultiGetEntity(). Through the use of Column Families, AttributeGroup enables users to logically group wide-column entities. More APIs to support AttributeGroup will come soon, including GetEntity, PutEntity, and others.
- Added new tickers
rocksdb.fifo.{max.size|ttl}.compactions
to count FIFO compactions that drop files for different reasons - Add an experimental offpeak duration awareness by setting
DBOptions::daily_offpeak_time_utc
in "HH:mm-HH:mm" format. This information will be used for resource optimization in the future - Users can now change the max bytes granted in a single refill period (i.e, burst) during runtime by
SetSingleBurstBytes()
for RocksDB rate limiter
Public API Changes
- The default value of
DBOptions::fail_if_options_file_error
changed fromfalse
totrue
. Operations that set in-memory options (e.g.,DB::Open*()
,DB::SetOptions()
,DB::CreateColumnFamily*()
, andDB::DropColumnFamily()
) but fail to persist the change will now return a non-OKStatus
by default. - Add new Cache APIs GetSecondaryCacheCapacity() and GetSecondaryCachePinnedUsage() to return the configured capacity, and cache reservation charged to the secondary cache.
Behavior Changes
- For non direct IO, eliminate the file system prefetching attempt for compaction read when
Options::compaction_readahead_size
is 0 - During a write stop, writes now block on in-progress recovery attempts
- Deleting stale files upon recovery are delegated to SstFileManger if available so they can be rate limited.
Bug Fixes
- Fix a bug in auto_readahead_size where first_internal_key of index blocks wasn't copied properly resulting in corruption error when first_internal_key was used for comparison.
- Fixed a bug where compaction read under non direct IO still falls back to RocksDB internal prefetching after file system's prefetching returns non-OK status other than
Status::NotSupported()
- Add bounds check in WBWIIteratorImpl and make BaseDeltaIterator, WriteUnpreparedTxn and WritePreparedTxn respect the upper bound and lower bound in ReadOption. See 11680.
- Fixed the handling of wide-column base values in the
max_successive_merges
logic. - Fixed a rare race bug involving a concurrent combination of Create/DropColumnFamily and/or Set(DB)Options that could lead to inconsistency between (a) the DB's reported options state, (b) the DB options in effect, and (c) the latest persisted OPTIONS file.
- Fixed a possible underflow when computing the compressed secondary cache share of memory reservations while updating the compressed secondary to total block cache ratio.
Performance Improvements
- Improved the I/O efficiency of DB::Open a new DB with
create_missing_column_families=true
and many column families.