github facebook/rocksdb v10.0.1
RocksDB 10.0.1 Release

4 days ago

10.0.1 (03/05/2025)

Public API Changes

  • Add an unordered map of name/value pairs, ReadOptions::property_bag, to pass opaque options through to an external table when creating an Iterator.
  • Introduced CompactionServiceJobStatus::kAborted to allow handling aborted scenario in Schedule(), Wait() or OnInstallation() APIs in Remote Compactions.
  • Added a column family option disallow_memtable_writes to safely fail any attempts to write to a non-default column family. This can be used for column families that are ingest only.

10.0.0 (02/21/2025)

New Features

  • Introduced new auto_refresh_iterator_with_snapshot opt-in knob that (when enabled) will periodically release obsolete memory and storage resources for as long as the iterator is making progress and its supplied read_options.snapshot was initialized with non-nullptr value.
  • Added the ability to plug-in a custom table reader implementation. See include/rocksdb/external_table_reader.h for more details.
  • Experimental feature: RocksDB now supports FAISS inverted file based indices via the secondary indexing framework. Applications can use FAISS secondary indices to automatically quantize embeddings and perform K-nearest-neighbors similarity searches. See FaissIVFIndex and SecondaryIndex for more details. Note: the FAISS integration currently requires using the BUCK build.
  • Add new DB property num_running_compaction_sorted_runs that tracks the number of sorted runs being processed by currently running compactions
  • Experimental feature: added support for simple secondary indices that index the specified column as-is. See SimpleSecondaryIndex and SecondaryIndex for more details.
  • Added new TransactionDBOptions::txn_commit_bypass_memtable_threshold, which enables optimized transaction commit (see TransactionOptions::commit_bypass_memtable) when the transaction size exceeds a configured threshold.

Public API Changes

  • Updated the query API of the experimental secondary indexing feature by removing the earlier SecondaryIndex::NewIterator virtual and adding a SecondaryIndexIterator class that can be utilized by applications to find the primary keys for a given search target.
  • Added back the ability to leverage the primary key when building secondary index entries. This involved changes to the signatures of SecondaryIndex::GetSecondary{KeyPrefix,Value} as well as the addition of a new method SecondaryIndex::FinalizeSecondaryKeyPrefix. See the API comments for more details.
  • Minimum supported version of ZSTD is now 1.4.0, for code simplification. Obsolete CompressionType kZSTDNotFinalCompression is also removed.

Behavior Changes

  • VerifyBackup in verify_with_checksum=true mode will now evaluate checksums in parallel. As a result, unlike in case of original implementation, the API won't bail out on a very first corruption / mismatch and instead will iterate over all the backup files logging success / degree_of_failure for each.
  • Reversed the order of updates to the same key in WriteBatchWithIndex. This means if there are multiple updates to the same key, the most recent update is ordered first. This affects the output of WBWIIterator. When WriteBatchWithIndex is created with overwrite_key=true, this affects the output only if Merge is used (#13387).
  • Added support for Merge operations in transactions using option TransactionOptions::commit_bypass_memtable.

Bug Fixes

  • Fixed GetMergeOperands() API in ReadOnlyDB and SecondaryDB
  • Fix a bug in GetMergeOperands() that can return incorrect status (MergeInProgress) and incorrect number of merge operands. This can happen when GetMergeOperandsOptions::continue_cb is set, both active and immutable memtables have merge operands and the callback stops the look up at the immutable memtable.

Don't miss a new rocksdb release

NewReleases is sending notifications on new releases.