RocksDB v6.23.0 Release Notes

Release Date: 2021-07-16 // almost 3 years ago
  • Behavior Changes

    • ๐Ÿš€ Obsolete keys in the bottommost level that were preserved for a snapshot will now be cleaned upon snapshot release in all cases. This form of compaction (snapshot release triggered compaction) previously had an artificial limitation that multiple tombstones needed to be present. ### ๐Ÿ› Bug Fixes
    • ๐Ÿ–จ Blob file checksums are now printed in hexadecimal format when using the manifest_dump ldb command.
    • GetLiveFilesMetaData() now populates the temperature, oldest_ancester_time, and file_creation_time fields of its LiveFileMetaData results when the information is available. Previously these fields always contained zero indicating unknown.
    • ๐Ÿ›  Fix mismatches of OnCompaction{Begin,Completed} in case of DisableManualCompaction().
    • ๐Ÿ›  Fix continuous logging of an existing background error on every user write
    • Fix a bug that Get() return Status::OK() and an empty value for non-existent key when read_options.read_tier = kBlockCacheTier.
    • ๐Ÿ›  Fix a bug that stat in get_context didn't accumulate to statistics when query is failed.
    • โœ… Fixed handling of DBOptions::wal_dir with LoadLatestOptions() or ldb --try_load_options on a copied or moved DB. Previously, when the WAL directory is same as DB directory (default), a copied or moved DB would reference the old path of the DB as the WAL directory, potentially corrupting both copies. Under this change, the wal_dir from DB::GetOptions() or LoadLatestOptions() may now be empty, indicating that the current DB directory is used for WALs. This is also a subtle API change.

    ๐Ÿ†• New Features

    • ldb has a new feature, list_live_files_metadata, that shows the live SST files, as well as their LSM storage level and the column family they belong to.
    • The new BlobDB implementation now tracks the amount of garbage in each blob file in the MANIFEST.
    • โ†” Integrated BlobDB now supports Merge with base values (Put/Delete etc.).
    • RemoteCompaction supports sub-compaction, the job_id in the user interface is changed from int to uint64_t to support sub-compaction id.
    • ๐Ÿ”ฆ Expose statistics option in RemoteCompaction worker.

    Public API change

    • โž• Added APIs to the Customizable class to allow developers to create their own Customizable classes. Created the utilities/customizable_util.h file to contain helper methods for developing new Customizable classes.
    • ๐Ÿ”„ Change signature of SecondaryCache::Name(). Make SecondaryCache customizable and add SecondaryCache::CreateFromString method.