11.13.2 (10/28/2026)
Bug Fixes
- Fixed a secondary instance with
open_files_async = truegetting stuck afterTryCatchUpWithPrimary()returnedPathNotFoundfor a table file that the primary deleted before the background opener reached it. - Fixed blob direct write with more than one concurrent flush of a column family: a later flush sealed and published the blob files of the oldest pending memtable instead of its own, so flushes failed with
Corruption: VersionBuilder: Blob file #N already addedand the database stopped.
11.13.1 (10/23/2026)
Bug Fixes
- Fixed data loss with
min_tombstones_for_range_conversionand external file ingestion. An iterator whose view predated the ingestion could convert the deleted keys around the ingested keys into a range tombstone that deleted them. This happened when the file got no new sequence number (sequence number zero,ingest_behind, orallow_db_generated_files), and when an iterator was created during the ingestion. - Fixed a data loss bug where an iterator with
ReadOptions::read_tier = kMemtableTiercould, withmin_tombstones_for_range_conversionenabled, insert a range tombstone that deleted live keys stored only in SST files. Read-path range tombstone conversion now runs only for iterators withread_tier = kReadAllTier.
11.13.0 (10/21/2026)
New Features
- Added
FileSystem::IsPreallocationSupported(). AFileSystemthat never preallocates file space can return false so that DB open skips reopening and truncating the last WAL file.
Public API Changes
- Added the experimental
DBOptions::track_options_file_number_in_manifest
rollout option (with C and Java bindings). The option is persisted in each
OPTIONS file. When enabled, RocksDB durably creates an OPTIONS file and then
commits its file number in MANIFEST. Column-family create/drop commits the
configuration snapshot and membership in one MANIFEST record. A newer tracked
OPTIONS file without a commit is ignored after a crash, while a newer OPTIONS
file written with tracking disabled retains the legacy highest-numbered-file
behavior. Batched column-family changes publish one snapshot; after partial
success it can be a safe superset that persisted-options APIs filter against
live MANIFEST membership. OrdinaryDB::Opencontinues to use caller-supplied
options and does not depend on the operational snapshot. - Added
EncodeEntry(),PackSequenceAndType(), andUnPackSequenceAndType()inrocksdb/utilities/types_util.hto construct internal keys and pack or unpack their sequence numbers and entry types.kInternalKeyFooterSizeexposes the footer size in bytes. - Added
ldb update_manifest --rebind_options_file --options_file=OPTIONS-<number>for offline repair of a committed MANIFEST OPTIONS file number. Operators must select a trusted snapshot that has MANIFEST tracking enabled and provide any external DB/CF allocation roots that are not serialized in OPTIONS.
Behavior Changes
- With
max_bgerror_resume_count <= 0(auto resume disabled), a retryable or file-scoped IO error during compaction or flush is now a hard background error that stops writes untilDB::Resume()is called. Previously, compaction errors were silently retried, and flush errors with a healthy WAL were soft errors that let writes continue while flushes were stopped.
Bug Fixes
- Fixed two more
SstFileManagertrash accounting leaks: retrying a failed trash deletion immediately (for example with rate limiting disabled) after the file had disappeared, and a trash file that was deleted but whose directory sync then failed. In both cases the file's size stayed in the total trash size and tracked size until restart. - Fixed
SstFileManagertrash accounting leaking the size of a queued trash file that disappeared before deletion (for example because its directory was renamed). The leaked bytes stayed in the total trash size until restart, which could push every later deletion pastmax_trash_db_ratioand make it immediate instead of rate limited. - Fixed
MultiGetwithReadOptions::async_ioreturningNotSupportedwhen io_uring initialization or an asynchronous read submission fails. It now checks async I/O support on the reading thread and falls back to synchronous reads when needed. - Fixed subset checkpoints so their newest OPTIONS file lists only the column
families retained by the checkpoint. This applies with both legacy
highest-numbered OPTIONS selection and MANIFEST-tracked OPTIONS selection, and
preventsLoadLatestOptionsfrom recreating column families that the subset
checkpoint intentionally dropped from its copied MANIFEST.
Performance Improvements
- Perf context counters and timers no longer call the thread-local init function of
perf_contexton every update. WithkEnableCount, a counter update costs about 60% less.