diff --git a/HISTORY.md b/HISTORY.md index feffb34b4c..a1700f993a 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,31 @@ # Rocksdb Change Log > NOTE: Entries for next release do not go here. Follow instructions in `unreleased_history/README.txt` +## 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 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 `TransactionDB`s 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). + ## 9.2.0 (05/01/2024) ### New Features * Added two options `deadline` and `max_size_bytes` for CacheDumper to exit early diff --git a/include/rocksdb/version.h b/include/rocksdb/version.h index 24506703fb..a7fd178040 100644 --- a/include/rocksdb/version.h +++ b/include/rocksdb/version.h @@ -12,7 +12,7 @@ // NOTE: in 'main' development branch, this should be the *next* // minor or major version number planned for release. #define ROCKSDB_MAJOR 9 -#define ROCKSDB_MINOR 3 +#define ROCKSDB_MINOR 4 #define ROCKSDB_PATCH 0 // Do not use these. We made the mistake of declaring macros starting with diff --git a/tools/check_format_compatible.sh b/tools/check_format_compatible.sh index 6da1000f4a..07b7cf346b 100755 --- a/tools/check_format_compatible.sh +++ b/tools/check_format_compatible.sh @@ -125,7 +125,7 @@ EOF # To check for DB forward compatibility with loading options (old version # reading data from new), as well as backward compatibility -declare -a db_forward_with_options_refs=("8.6.fb" "8.7.fb" "8.8.fb" "8.9.fb" "8.10.fb" "8.11.fb" "9.0.fb" "9.1.fb" "9.2.fb") +declare -a db_forward_with_options_refs=("8.6.fb" "8.7.fb" "8.8.fb" "8.9.fb" "8.10.fb" "8.11.fb" "9.0.fb" "9.1.fb" "9.2.fb" "9.3.fb") # To check for DB forward compatibility without loading options (in addition # to the "with loading options" set), as well as backward compatibility declare -a db_forward_no_options_refs=() # N/A at the moment diff --git a/unreleased_history/behavior_changes/fifo-compact-range.md b/unreleased_history/behavior_changes/fifo-compact-range.md deleted file mode 100644 index 4366939599..0000000000 --- a/unreleased_history/behavior_changes/fifo-compact-range.md +++ /dev/null @@ -1 +0,0 @@ -* CompactRange() with change_level=true on a CF with FIFO compaction will return Status::NotSupported(). \ No newline at end of file diff --git a/unreleased_history/behavior_changes/fifo-ingestion.md b/unreleased_history/behavior_changes/fifo-ingestion.md deleted file mode 100644 index 1d581f9f8c..0000000000 --- a/unreleased_history/behavior_changes/fifo-ingestion.md +++ /dev/null @@ -1 +0,0 @@ -* External file ingestion with FIFO compaction will always ingest to L0. \ No newline at end of file diff --git a/unreleased_history/bug_fixes/2pc_wal_sync.md b/unreleased_history/bug_fixes/2pc_wal_sync.md deleted file mode 100644 index ce27e36cec..0000000000 --- a/unreleased_history/bug_fixes/2pc_wal_sync.md +++ /dev/null @@ -1 +0,0 @@ -* Fixed a bug for databases using `DBOptions::allow_2pc == true` (all `TransactionDB`s 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". diff --git a/unreleased_history/bug_fixes/compact_files.md b/unreleased_history/bug_fixes/compact_files.md deleted file mode 100644 index e6ea72addc..0000000000 --- a/unreleased_history/bug_fixes/compact_files.md +++ /dev/null @@ -1 +0,0 @@ -Fix a bug where `CompactFiles()` can compact files of range conflict with other ongoing compactions' when `preclude_last_level_data_seconds > 0` is used diff --git a/unreleased_history/bug_fixes/fix-import-epoch.md b/unreleased_history/bug_fixes/fix-import-epoch.md deleted file mode 100644 index 97df6276fa..0000000000 --- a/unreleased_history/bug_fixes/fix-import-epoch.md +++ /dev/null @@ -1 +0,0 @@ -* 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. \ No newline at end of file diff --git a/unreleased_history/bug_fixes/fix_compressed_wal_recycling.md b/unreleased_history/bug_fixes/fix_compressed_wal_recycling.md deleted file mode 100644 index 88c4b7706d..0000000000 --- a/unreleased_history/bug_fixes/fix_compressed_wal_recycling.md +++ /dev/null @@ -1 +0,0 @@ -* Fixed a false positive `Status::Corruption` reported when reopening a DB that used `DBOptions::recycle_log_file_num > 0` and `DBOptions::wal_compression != kNoCompression`. diff --git a/unreleased_history/bug_fixes/inplace_update_race.md b/unreleased_history/bug_fixes/inplace_update_race.md deleted file mode 100644 index 77331b0d5b..0000000000 --- a/unreleased_history/bug_fixes/inplace_update_race.md +++ /dev/null @@ -1 +0,0 @@ -* Fixed race conditions when `ColumnFamilyOptions::inplace_update_support == true` between user overwrites and reads on the same key. diff --git a/unreleased_history/bug_fixes/lock_wal.md b/unreleased_history/bug_fixes/lock_wal.md deleted file mode 100644 index 4063a432ca..0000000000 --- a/unreleased_history/bug_fixes/lock_wal.md +++ /dev/null @@ -1 +0,0 @@ -* While WAL is locked with LockWAL(), some operations like Flush() and IngestExternalFile() are now blocked as they should have been. diff --git a/unreleased_history/bug_fixes/tiered_cache_fs_buffer.md b/unreleased_history/bug_fixes/tiered_cache_fs_buffer.md deleted file mode 100644 index 3d0b5dfa62..0000000000 --- a/unreleased_history/bug_fixes/tiered_cache_fs_buffer.md +++ /dev/null @@ -1 +0,0 @@ -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). diff --git a/unreleased_history/new_features/get_entity_txn.md b/unreleased_history/new_features/get_entity_txn.md deleted file mode 100644 index f925bdc024..0000000000 --- a/unreleased_history/new_features/get_entity_txn.md +++ /dev/null @@ -1 +0,0 @@ -Optimistic transactions and pessimistic transactions with the WriteCommitted policy now support the `GetEntity` API. diff --git a/unreleased_history/new_features/iterator_property_value_pinned.md b/unreleased_history/new_features/iterator_property_value_pinned.md deleted file mode 100644 index c0e083d389..0000000000 --- a/unreleased_history/new_features/iterator_property_value_pinned.md +++ /dev/null @@ -1 +0,0 @@ -* 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. diff --git a/unreleased_history/new_features/multi_get_entity_txn.md b/unreleased_history/new_features/multi_get_entity_txn.md deleted file mode 100644 index 526eab4aea..0000000000 --- a/unreleased_history/new_features/multi_get_entity_txn.md +++ /dev/null @@ -1 +0,0 @@ -Optimistic transactions and WriteCommitted pessimistic transactions now support the `MultiGetEntity` API. diff --git a/unreleased_history/new_features/put_entity_txn.md b/unreleased_history/new_features/put_entity_txn.md deleted file mode 100644 index dbf784df74..0000000000 --- a/unreleased_history/new_features/put_entity_txn.md +++ /dev/null @@ -1 +0,0 @@ -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. diff --git a/unreleased_history/public_api_changes/expose_block_based_metadata_cache_options_via_c_api.md b/unreleased_history/public_api_changes/expose_block_based_metadata_cache_options_via_c_api.md deleted file mode 100644 index 8ba77be402..0000000000 --- a/unreleased_history/public_api_changes/expose_block_based_metadata_cache_options_via_c_api.md +++ /dev/null @@ -1 +0,0 @@ -Exposed block based metadata cache options via C API diff --git a/unreleased_history/public_api_changes/expose_compaction_pri_via_c_api.md b/unreleased_history/public_api_changes/expose_compaction_pri_via_c_api.md deleted file mode 100644 index 010535471d..0000000000 --- a/unreleased_history/public_api_changes/expose_compaction_pri_via_c_api.md +++ /dev/null @@ -1 +0,0 @@ -Exposed compaction pri via c api. diff --git a/unreleased_history/public_api_changes/sec_cache_allow_all.md b/unreleased_history/public_api_changes/sec_cache_allow_all.md deleted file mode 100644 index 67ea07f2bd..0000000000 --- a/unreleased_history/public_api_changes/sec_cache_allow_all.md +++ /dev/null @@ -1 +0,0 @@ -Add a kAdmPolicyAllowAll option to TieredAdmissionPolicy that admits all blocks evicted from the primary block cache into the compressed secondary cache.