RocksDB v6.22.0 Release Notes

Release Date: 2021-06-18 // almost 3 years ago
  • Behavior Changes

    • ๐Ÿ›ฐ Added two additional tickers, MEMTABLE_PAYLOAD_BYTES_AT_FLUSH and MEMTABLE_GARBAGE_BYTES_AT_FLUSH. These stats can be used to estimate the ratio of "garbage" (outdated) bytes in the memtable that are discarded at flush time.
    • โž• Added API comments clarifying safe usage of Disable/EnableManualCompaction and EventListener callbacks for compaction. ### ๐Ÿ› Bug Fixes
    • ๐Ÿง fs_posix.cc GetFreeSpace() always report disk space available to root even when running as non-root. Linux defaults often have disk mounts with 5 to 10 percent of total space reserved only for root. Out of space could result for non-root users.
    • Subcompactions are now disabled when user-defined timestamps are used, since the subcompaction boundary picking logic is currently not timestamp-aware, which could lead to incorrect results when different subcompactions process keys that only differ by timestamp.
    • ๐Ÿ›  Fix an issue that DeleteFilesInRange() may cause ongoing compaction reports corruption exception, or ASSERT for debug build. There's no actual data loss or corruption that we find.
    • ๐Ÿ›  Fixed confusingly duplicated output in LOG for periodic stats ("DUMPING STATS"), including "Compaction Stats" and "File Read Latency Histogram By Level".
    • ๐Ÿ›  Fixed performance bugs in background gathering of block cache entry statistics, that could consume a lot of CPU when there are many column families with a shared block cache.

    ๐Ÿ†• New Features

    • Marked the Ribbon filter and optimize_filters_for_memory features as production-ready, each enabling memory savings for Bloom-like filters. Use NewRibbonFilterPolicy in place of NewBloomFilterPolicy to use Ribbon filters instead of Bloom, or ribbonfilter in place of bloomfilter in configuration string.
    • ๐Ÿ‘ Allow DBWithTTL to use DeleteRange api just like other DBs. DeleteRangeCF() which executes WriteBatchInternal::DeleteRange() has been added to the handler in DBWithTTLImpl::Write() to implement it.
    • Add BlockBasedTableOptions.prepopulate_block_cache. If enabled, it prepopulate warm/hot data blocks which are already in memory into block cache at the time of flush. On a flush, the data block that is in memory (in memtables) get flushed to the device. If using Direct IO, additional IO is incurred to read this data back into memory again, which is avoided by enabling this option and it also helps with Distributed FileSystem. More details in include/rocksdb/table.h.
    • โž• Added a cancel field to CompactRangeOptions, allowing individual in-process manual range compactions to be cancelled.

    ๐Ÿ†• New Features

    • โž• Added BlobMetaData to the ColumnFamilyMetaData to return information about blob files

    Public API change

    • โž• Added GetAllColumnFamilyMetaData API to retrieve the ColumnFamilyMetaData about all column families.