9.3.1 (05/25/2024)
Bug Fixes
- [internal only] Build script improvement
9.3.0 (05/17/2024)
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 theSlice
returned byIterator::value()
can be used until theIterator
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
(allTransactionDB
s exceptOptimisticTransactionDB
) that have exactly one column family. Due to a missing WAL sync, attempting to open the DB could have returned aStatus::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' whenpreclude_last_level_data_seconds > 0
is used - Fixed a false positive
Status::Corruption
reported when reopening a DB that usedDBOptions::recycle_log_file_num > 0
andDBOptions::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).