Skip to content

RocksDB Release v5.18.3

Compare
Choose a tag to compare
@gfosco gfosco released this 28 Feb 18:09
· 2282 commits to master since this release

Rocksdb Change Log

5.18.3 (2/11/2019)

Bug Fixes

  • Fix possible LSM corruption when both range deletions and subcompactions are used. The symptom of this corruption is L1+ files overlapping in the user key space.

5.18.2 (01/31/2019)

Public API Change

  • Change time resolution in FileOperationInfo.
  • Deleting Blob files also go through SStFileManager.

5.18.0 (11/30/2018)

New Features

  • Introduced JemallocNodumpAllocator memory allocator. When being use, block cache will be excluded from core dump.
  • Introduced PerfContextByLevel as part of PerfContext which allows storing perf context at each level. Also replaced __thread with thread_local keyword for perf_context. Added per-level perf context for bloom filter and Get query.
  • With level_compaction_dynamic_level_bytes = true, level multiplier may be adjusted automatically when Level 0 to 1 compaction is lagged behind.
  • Introduced DB option atomic_flush. If true, RocksDB supports flushing multiple column families and atomically committing the result to MANIFEST. Useful when WAL is disabled.
  • Added num_deletions and num_merge_operands members to TableProperties.
  • Added "rocksdb.min-obsolete-sst-number-to-keep" DB property that reports the lower bound on SST file numbers that are being kept from deletion, even if the SSTs are obsolete.
  • Add xxhash64 checksum support
  • Introduced MemoryAllocator, which lets the user specify custom memory allocator for block based table.
  • Improved DeleteRange to prevent read performance degradation. The feature is no longer marked as experimental.
  • Enabled checkpoint on readonly db (DBImplReadOnly).

Public API Change

  • DBOptions::use_direct_reads now affects reads issued by BackupEngine on the database's SSTs.
  • NO_ITERATORS is divided into two counters NO_ITERATOR_CREATED and NO_ITERATOR_DELETE. Both of them are only increasing now, just as other counters.

Bug Fixes

  • Fix corner case where a write group leader blocked due to write stall blocks other writers in queue with WriteOptions::no_slowdown set.
  • Fix in-memory range tombstone truncation to avoid erroneously covering newer keys at a lower level, and include range tombstones in compacted files whose largest key is the range tombstone's start key.
  • Properly set the stop key for a truncated manual CompactRange
  • Fix slow flush/compaction when DB contains many snapshots. The problem became noticeable to us in DBs with 100,000+ snapshots, though it will affect others at different thresholds.
  • Fix the bug that WriteBatchWithIndex's SeekForPrev() doesn't see the entries with the same key.
  • Fix the bug where user comparator was sometimes fed with InternalKey instead of the user key. The bug manifests when during GenerateBottommostFiles.
  • Fix a bug in WritePrepared txns where if the number of old snapshots goes beyond the snapshot cache size (128 default) the rest will not be checked when evicting a commit entry from the commit cache.
  • Fixed Get correctness bug in the presence of range tombstones where merge operands covered by a range tombstone always result in NotFound.
  • Start populating NO_FILE_CLOSES ticker statistic, which was always zero previously.
  • The default value of NewBloomFilterPolicy()'s argument use_block_based_builder is changed to false. Note that this new default may cause large temp memory usage when building very large SST files.
  • Fix a deadlock caused by compaction and file ingestion waiting for each other in the event of write stalls.
  • Make DB ignore dropped column families while committing results of atomic flush.