Skip to content

RocksDB 9.3.1

Compare
Choose a tag to compare
@ajkr ajkr released this 28 Jun 20:38
· 4 commits to 9.3.fb since this release

9.3.1 (2024-05-25)

Bug Fixes

  • [internal only] Build script improvement

9.3.0 (2024-05-17)

New Features

  • Optimistic transactions and pessimistic transactions with the WriteCommitted policy now support the GetEntity API.
  • Added new Iterator property, "rocksdb.iterator.is-value-pinned", for checking whether the Slice returned by Iterator::value() can be used until the Iterator is destroyed.
  • Optimistic transactions and WriteCommitted pessimistic transactions now support the MultiGetEntity API.
  • Optimistic transactions and pessimistic transactions with the WriteCommitted policy now support the PutEntity API. Support for read APIs and other write policies (WritePrepared, WriteUnprepared) will be added later.

Public API Changes

  • Exposed block based metadata cache options via C API
  • Exposed compaction pri via c api.
  • Add a kAdmPolicyAllowAll option to TieredAdmissionPolicy that admits all blocks evicted from the primary block cache into the compressed secondary cache.

Behavior Changes

  • CompactRange() with change_level=true on a CF with FIFO compaction will return Status::NotSupported().
  • External file ingestion with FIFO compaction will always ingest to L0.

Bug Fixes

  • Fixed a bug for databases using DBOptions::allow_2pc == true (all TransactionDBs except OptimisticTransactionDB) that have exactly one column family. Due to a missing WAL sync, attempting to open the DB could have returned a Status::Corruption with a message like "SST file is ahead of WALs".
  • Fix a bug in CreateColumnFamilyWithImport() where if multiple CFs are imported, we were not resetting files' epoch number and L0 files can have overlapping key range but the same epoch number.
  • Fixed race conditions when ColumnFamilyOptions::inplace_update_support == true between user overwrites and reads on the same key.
  • Fix a bug where CompactFiles() can compact files of range conflict with other ongoing compactions' when preclude_last_level_data_seconds > 0 is used
  • Fixed a false positive Status::Corruption reported when reopening a DB that used DBOptions::recycle_log_file_num > 0 and DBOptions::wal_compression != kNoCompression.
  • While WAL is locked with LockWAL(), some operations like Flush() and IngestExternalFile() are now blocked as they should have been.
  • Fixed a bug causing stale memory access when using the TieredSecondaryCache with an NVM secondary cache, and a file system that supports return an FS allocated buffer for MultiRead (FSSupportedOps::kFSBuffer is set).