A library that provides an embeddable, persistent key-value store for fast storage.
GPL-2.0 License
Published by ltamasi over 1 year ago
internal_merge_count
PerfContext counter.WriteOptions::disableWAL == true
(#11148).internal_merge_point_lookup_count
which tracks the number of Merge operands applied while serving point lookup queries.HyperClockCacheOptions
inherits secondary_cache
option from ShardedCacheOptions
)rocksdb.cf-write-stall-stats
, rocksdb.db-write-stall-stats
and APIs to examine them in a structured way. In particular, users of GetMapProperty()
with property kCFWriteStallStats
/kDBWriteStallStats
can now use the functions in WriteStallStatsMapKeys
to find stats in the map.Cache
that are mostly relevant to custom implementations or wrappers. Especially, asychronous lookup functionality is moved from Lookup()
to a new StartAsyncLookup()
function.Published by ajkr over 1 year ago
ReadOptions::verify_checksums=false
disables checksum verification for more reads of non-CacheEntryRole::kDataBlock
blocks.ColumnFamilyData::flush_reason
caused by concurrent flushes.Get
and MultiGet
when user-defined timestamps is enabled in combination with BlobDB.LockWAL()
such as allowing concurrent/recursive use and not expecting UnlockWAL()
after non-OK result. See API comments.GetEntity
would expose the blob reference instead of the blob value.DisableManualCompaction()
and CompactRangeOptions::canceled
to cancel compactions even when they are waiting on conflicting compactions to finishGetMergeOperands()
could transiently return Status::MergeInProgress()
LoadOptionsFromFile
, LoadLatestOptions
, CheckOptionsCompatibility
.BLOCK_CACHE_INDEX_BYTES_EVICT
, BLOCK_CACHE_FILTER_BYTES_EVICT
, BLOOM_FILTER_MICROS
, NO_FILE_CLOSES
, STALL_L0_SLOWDOWN_MICROS
, STALL_MEMTABLE_COMPACTION_MICROS
, STALL_L0_NUM_FILES_MICROS
, RATE_LIMIT_DELAY_MILLIS
, NO_ITERATORS
, NUMBER_FILTERED_DELETES
, WRITE_TIMEDOUT
, BLOB_DB_GC_NUM_KEYS_OVERWRITTEN
, BLOB_DB_GC_NUM_KEYS_EXPIRED
, BLOB_DB_GC_BYTES_OVERWRITTEN
, BLOB_DB_GC_BYTES_EXPIRED
, BLOCK_CACHE_COMPRESSION_DICT_BYTES_EVICT
as well as the histograms STALL_L0_SLOWDOWN_COUNT
, STALL_MEMTABLE_COMPACTION_COUNT
, STALL_L0_NUM_FILES_COUNT
, HARD_RATE_LIMIT_DELAY_COUNT
, SOFT_RATE_LIMIT_DELAY_COUNT
, BLOB_DB_GC_MICROS
, and NUM_DATA_BLOCKS_READ_PER_LEVEL
. Note that as a result, the C++ enum values of the still supported statistics have changed. Developers are advised to not rely on the actual numeric values.GetColumnFamilyOptionsFrom{Map|String}(const ColumnFamilyOptions&, ..)
, GetDBOptionsFrom{Map|String}(const DBOptions&, ..)
, GetBlockBasedTableOptionsFrom{Map|String}(const BlockBasedTableOptions& table_options, ..)
and GetPlainTableOptionsFrom{Map|String}(const PlainTableOptions& table_options,..)
.Status::Corruption
, Status::SubCode::kMergeOperatorFailed
, for users to identify corruption failures originating in the merge operator, as opposed to RocksDB's internally identified data corruptionsmake
build now builds a shared library by default instead of a static library. Use LIB_MODE=static
to override.FilterV3
API. See the comment of the API for more details.do_not_compress_roles
to CompressedSecondaryCacheOptions
to disable compression on certain kinds of block. Filter blocks are now not compressed by CompressedSecondaryCache by default.MultiGetEntity
API that enables batched wide-column point lookups. See the API comments for more details.Published by hx235 over 1 year ago
ColumnFamilyData::flush_reason
caused by concurrent flushes.DisableManualCompaction()
and CompactRangeOptions::canceled
to cancel compactions even when they are waiting on conflicting compactions to finishGetMergeOperands()
could transiently return Status::MergeInProgress()
epoch_number
and sort L0 files by epoch_number
instead of largest_seqno
. epoch_number
represents the order of a file being flushed or ingested/imported. Compaction output file will be assigned with the minimum epoch_number
among input files'. For L0, larger epoch_number
indicates newer L0 file.iterate_upper_bound
is processed.CompactionOptionsFIFO::max_table_files_size
is no exceeded since #10348 or 7.8.0.DB::SyncWAL()
affecting track_and_verify_wals_in_manifest
. Without the fix, application may see "open error: Corruption: Missing WAL with log number" while trying to open the db. The corruption is a false alarm but prevents DB open (#10892).epoch_number
. Before the fix, force_consistency_checks=true
may catch the corruption before it's exposed to readers, in which case writes returning Status::Corruption
would be expected. Also replace the previous incomplete fix (#5958) to the same corruption with this new and more complete fix.CompactRange()
under change_level=true
acts on overlapping range with an ongoing file ingestion for level compaction. This will either result in overlapping file ranges corruption at a certain level caught by force_consistency_checks=true
or protentially two same keys both with seqno 0 in two different levels (i.e, new data ends up in lower/older level). The latter will be caught by assertion in debug build but go silently and result in read returning wrong result in release build. This fix is general so it also replaced previous fixes to a similar problem for CompactFiles()
(#4665), general CompactRange()
and auto compaction (commit 5c64fb6 and 87dfc1d).CreateBackupOptions::exclude_files_callback
. To restore the DB, the excluded files must be provided in alternative backup directories using RestoreOptions::alternate_dirs
.MergeOperationOutput::op_failure_scope
for merge operator users to control the blast radius of merge operator failures. Existing merge operator users do not need to make any change to preserve the old behaviorPublished by anand1976 almost 2 years ago
iterate_upper_bound
is processed.Status::Corruption
in case of force_consistency_checks=true
(default). It affects use cases that enable both parallel flush (max_background_flushes > 1
or max_background_jobs >= 8
) and non-default memtable count (max_write_buffer_number > 2
).READ_NUM_MERGE_OPERANDS
ticker was not updated when the base key-value or tombstone was read from an SST file.block_cache_compressed
. block_cache_compressed
no longer attempts to use SecondaryCache features.PutEntity
API, and retrieved using GetEntity
and the new columns
API of iterator. For compatibility, the classic APIs Get
and MultiGet
, as well as iterator's value
API return the value of the anonymous default column of wide-column entities; also, GetEntity
and iterator's columns
return any plain key-values in the form of an entity which only has the anonymous default column. Merge
(and GetMergeOperands
) currently also apply to the default column; any other columns of entities are unaffected by Merge
operations. Note that some features like compaction filters, transactions, user-defined timestamps, and the SST file writer do not yet support wide-column entities; also, there is currently no MultiGet
-like API to retrieve multiple entities at once. We plan to gradually close the above gaps and also implement new features like column-level operations (e.g. updating or querying only certain columns of an entity).estimated_entry_charge
option.block_cache_compressed
as a deprecated feature. Use SecondaryCache instead.SecondaryCache::InsertSaved()
API, with default implementation depending on Insert()
. Some implementations might need to add a custom implementation of InsertSaved()
. (Details in API comments.)Published by cbi42 almost 2 years ago
Status::Corruption
in case of force_consistency_checks=true
(default). It affects use cases that enable both parallel flush (max_background_flushes > 1
or max_background_jobs >= 8
) and non-default memtable count (max_write_buffer_number > 2
).iterate_upper_bound
is processed.DeleteRange()
now supports user-defined timestamp.DB::Properties::kFastBlockCacheEntryStats
, which is similar to DB::Properties::kBlockCacheEntryStats
, except returns cached (stale) values in more cases to reduce overhead.ignore_max_compaction_bytes_for_input
to ignore max_compaction_bytes limit when adding files to be compacted from input level. This should help reduce write amplification. The option is enabled by default.preserve_internal_time_seconds
to preserve the time information for the latest data. Which can be used to determine the age of data when preclude_last_level_data_seconds
is enabled. The time information is attached with SST in table property rocksdb.seqno.time.map
which can be parsed by tool ldb or sst_dump.flush_opts.wait=false
to stall when database has stopped all writes (#10001).ldb update_manifest
and ldb unsafe_remove_sst_file
are not usable because they were requiring the DB files to match the existing manifest state (before updating the manifest to match a desired state).AdvancedColumnFamilyOptions.level_compaction_dynamic_file_size
to false. As a side effect, it can create SSTs larger than the target_file_size (capped at 2x target_file_size) or smaller files.Published by cbi42 almost 2 years ago
Status::Corruption
in case of force_consistency_checks=true
(default). It affects use cases that enable both parallel flush (max_background_flushes > 1
or max_background_jobs >= 8
) and non-default memtable count (max_write_buffer_number > 2
).iterate_upper_bound
is processed.Published by pdillinger about 2 years ago
Published by ajkr about 2 years ago
GetLiveFiles
or CreateNewBackup
is asked to trigger and wait for memtable flush on a read-only DB. Such indirect requests for memtable flush are now ignored on a read-only DB.FlushWAL(true /* sync */)
(used by GetLiveFilesStorageInfo()
, which is used by checkpoint and backup) could cause parallel writes at the tail of a WAL file to never be synced.SetOptions()
fail to update periodical_task time like: stats_dump_period_sec
, stats_persist_period_sec
.rocksdb_column_family_handle_get_id
, rocksdb_column_family_handle_get_name
to get name, id of column family in C APICompressedSecondaryCache
, we just insert a dummy block into the primary cache and don’t erase the block from CompressedSecondaryCache
. A standalone handle is returned to the caller. Only if the block is found again from CompressedSecondaryCache
before the dummy block is evicted, we erase the block from CompressedSecondaryCache
and insert it into the primary cache.CompressedSecondaryCache
, we just insert a dummy block in CompressedSecondaryCache
. Only if it is evicted again before the dummy block is evicted from the cache, it is treated as a hot block and is inserted into CompressedSecondaryCache
.malloc_usable_size
is available (see #10583).num_file_reads_for_auto_readahead
is added in BlockBasedTableOptions which indicates after how many sequential reads internal auto prefetching should be start (default is 2).block_cache_standalone_handle_count
, block_cache_real_handle_count
,compressed_sec_cache_insert_real_count
, compressed_sec_cache_insert_dummy_count
, compressed_sec_cache_uncompressed_bytes
, and compressed_sec_cache_compressed_bytes
.CompressedSecondaryCacheOptions::enable_custom_split_merge
is added for enabling the custom split and merge feature, which split the compressed value into chunks so that they may better fit jemalloc bins.DeleteRange()
users. Internally, iterator will skip to the end of a range tombstone when possible, instead of looping through each key and check individually if a key is range deleted.PinnableSlice
now only points to the blob value and pins the backing resource (cache entry or buffer) in all cases, instead of containing a copy of the blob value. See #10625 and #10647.DeleteRange()
users should see improvement in get/iterator performance from mutable memtable (see #10547).Published by gitbw95 about 2 years ago
prepopulate_blob_cache
to ColumnFamilyOptions. If enabled, prepopulate warm/hot blobs which are already in memory into blob cache at the time of flush. On a flush, the blob that is in memory (in memtables) get flushed to the device. If using Direct IO, additional IO is incurred to read this blob back into memory again, which is avoided by enabling this option. This further helps if the workload exhibits high temporal locality, where most of the reads go to recently written data. This also helps in case of the remote file system since it involves network traffic and higher latencies.secondary_cache
in LRUCacheOptions.LRUCacheOptions::strict_capacity_limit
= true), creation will fail with Status::MemoryLimit()
. To opt in this feature, enable charging CacheEntryRole::kBlobCache
in BlockBasedTableOptions::cache_usage_options
.memtable_protection_bytes_per_key
that turns on memtable per key-value checksum protection. Each memtable entry will be suffixed by a checksum that is computed during writes, and verified in reads/compaction. Detected corruption will be logged and with corruption status returned to user.low_pri_pool_ratio
in LRUCacheOptions
to configure the ratio of capacity reserved for low priority cache entries (and therefore the remaining ratio is the space reserved for the bottom level), or configuring the new argument low_pri_pool_ratio
in NewLRUCache()
to achieve the same effect.CompactRangeOptions::exclusive_manual_compaction
is now false by default. This ensures RocksDB does not introduce artificial parallelism limitations by default.bottommost_temperture
to last_level_temperture
. The old option name is kept only for migration, please use the new option. The behavior is changed to apply temperature for the last_level
SST files only.FSDirectory::Fsync
or FSDirectory::Close
after the first FSDirectory::Close
; Also, valgrind could report call to close()
with fd=-1
.)GenericRateLimiter
could revert the bandwidth set dynamically using SetBytesPerSecond()
when a user configures a structure enclosing it, e.g., using GetOptionsFromString()
to configure an Options
that references an existing RateLimiter
object.GenericRateLimiter
.FIFOCompactionPicker::PickTTLCompaction
where total_size calculating might cause underflowbest_efforts_recovery
may fail to open the db with mmap read.fill_cache
read option set to false.AllocateData()
in CompressedSecondaryCache::SplitValueIntoChunks()
and MergeChunksIntoValueTest
.FaultInjectionSecondaryCache
.CompressedSecondaryCache
, the original block is split according to the jemalloc bin size in Insert()
and then merged back in Lookup()
.preclude_last_level_data_seconds
is enabled, the size amplification is calculated within non last_level data only which skip the last level and use the penultimate level as the size base.WriteBufferManager
constructed with allow_stall == false
will no longer trigger write stall implicitly by thrashing until memtable count limit is reached. Instead, a column family can continue accumulating writes while that CF is flushing, which means memory may increase. Users who prefer stalling writes must now explicitly set allow_stall == true
.CompressedSecondaryCache
into the stress tests.FragmentedRangeTombstoneList
during every read operation, it is now constructed once and stored in immutable memtables. This improves speed of querying range tombstones from immutable memtables.Published by siying about 2 years ago
FSDirectory::Fsync
or FSDirectory::Close
after the first FSDirectory::Close
; Also, valgrind could report call to close()
with fd=-1
.)PartitionedFilterBlockReader::GetFilterPartitionBlock
.experimental_mempurge_threshold
is now a ColumnFamilyOptions and can now be dynamically configured using SetOptions()
.ReadOptions::iter_start_ts
is set.blob_cache
to enable/disable blob caching.BlobSource
for blob read logic gives all users access to blobs, whether they are in the blob cache, secondary cache, or (remote) storage. Blobs can be potentially read both while handling user reads (Get
, MultiGet
, or iterator) and during compaction (while dealing with compaction filters, Merges, or garbage collection) but eventually all blob reads go through Version::GetBlob
or, for MultiGet, Version::MultiGetBlob
(and then get dispatched to the interface -- BlobSource
).AdvancedColumnFamilyOptions::preclude_last_level_data_seconds
, which makes sure the new data inserted within preclude_last_level_data_seconds won't be placed on cold tier (the feature is not complete).rocksdb_get_column_family_metadata()
and rocksdb_get_column_family_metadata_cf()
to obtain rocksdb_column_family_metadata_t
.rocksdb_column_family_metadata_t
and its get functions & destroy function.rocksdb_level_metadata_t
and its and its get functions & destroy function.rocksdb_file_metadata_t
and its and get functions & destroy functions.LRUCache
with strict_capacity_limit=true
), DB operations now fail with Status code kAborted
subcode kMemoryLimit
(IsMemoryLimit()
) instead of kIncomplete
(IsIncomplete()
) when the capacity limit is reached, because Incomplete can mean other specific things for some operations. In more detail, Cache::Insert()
now returns the updated Status code and this usually propagates through RocksDB to the user on failure.int ReserveThreads(int threads_to_be_reserved)
and int ReleaseThreads(threads_to_be_released)
into Env
class. In the default implementation, both return 0. Newly added xxxEnv
class that inherits Env
should implement these two functions for thread reservation/releasing features.GenericRateLimiter
could revert the bandwidth set dynamically using SetBytesPerSecond()
when a user configures a structure enclosing it, e.g., using GetOptionsFromString()
to configure an Options
that references an existing RateLimiter
object.Published by pdillinger about 2 years ago
FSDirectory::Fsync
or FSDirectory::Close
after the first FSDirectory::Close
; Also, valgrind could report call to close()
with fd=-1
.)Published by pdillinger about 2 years ago
GenericRateLimiter
could revert the bandwidth set dynamically using SetBytesPerSecond()
when a user configures a structure enclosing it, e.g., using GetOptionsFromString()
to configure an Options
that references an existing RateLimiter
object.rate_limiter_priority
through filter block reader functions to FileSystem
.protection_bytes_per_key > 0
on WriteBatch
or WriteOptions
, and configure inplace_callback != nullptr
.WritableFileWriter::filesize_
by DB::SyncWAL()
and DB::Put()
in two write queue mode.SyncWAL()
on the only WAL file of the db will not log the event in MANIFEST, thus allowing a subsequent DB::Open
even if the WAL file is missing or corrupted.index_type=kHashSearch
and using SetOptions
to change the prefix_extractor
.manual_wal_flush
and/or FlushWAL(true /* sync */)
, together with track_and_verify_wals_in_manifest == true
. For those users, losing unsynced data (e.g., due to power loss) could make future DB opens fail with a Status::Corruption
complaining about missing WAL data.WriteBatchInternal::Append()
where WAL termination point in write batch was not considered and the function appends an incorrect number of checksums.kDataBlockBinaryAndHash
.get_pinned
and multi_get
to C API.rocksdb_transaction_get_writebatch_wi
and rocksdb_transaction_rebuild_from_writebatch
to C API.rocksdb_options_get_blob_file_starting_level
and rocksdb_options_set_blob_file_starting_level
to C API.blobFileStartingLevel
and setBlobFileStartingLevel
to Java API.rocksdb_comparator_with_ts_create
to create timestamp aware comparatorwith_ts
auto_prefix_mode
.auto_prefix_mode
now notes some corner cases in which it returns different results than total_order_seek
, due to design bugs that are not easily fixed. Users using built-in comparators and keys at least the size of a fixed prefix length are not affected.WriteOptions::protection_bytes_per_key
, which can be used to enable key-value integrity protection for live updates.blob_garbage_collection_policy
and blob_garbage_collection_age_cutoff
to both force-enable and force-disable GC, as well as selectively override age cutoff when using CompactRange.GetSortedWalFiles()
(also used by GetLiveFilesStorageInfo()
, BackupEngine
, and Checkpoint
) to reduce risk of successfully created backup or checkpoint failing to open because of missing WAL file.blob_file_starting_level
to enable writing blob files during flushes and compactions starting from the specified LSM tree level.MultiGet()
APIsPublished by pdillinger over 2 years ago
rate_limiter_priority
through filter block reader functions to FileSystem
.protection_bytes_per_key > 0
on WriteBatch
or WriteOptions
, and configure inplace_callback != nullptr
.WritableFileWriter::filesize_
by DB::SyncWAL()
and DB::Put()
in two write queue mode.SyncWAL()
on the only WAL file of the db will not log the event in MANIFEST, thus allowing a subsequent DB::Open
even if the WAL file is missing or corrupted.index_type=kHashSearch
and using SetOptions
to change the prefix_extractor
.manual_wal_flush
and/or FlushWAL(true /* sync */)
, together with track_and_verify_wals_in_manifest == true
. For those users, losing unsynced data (e.g., due to power loss) could make future DB opens fail with a Status::Corruption
complaining about missing WAL data.WriteBatchInternal::Append()
where WAL termination point in write batch was not considered and the function appends an incorrect number of checksums.kDataBlockBinaryAndHash
.get_pinned
and multi_get
to C API.rocksdb_transaction_get_writebatch_wi
and rocksdb_transaction_rebuild_from_writebatch
to C API.rocksdb_options_get_blob_file_starting_level
and rocksdb_options_set_blob_file_starting_level
to C API.blobFileStartingLevel
and setBlobFileStartingLevel
to Java API.rocksdb_comparator_with_ts_create
to create timestamp aware comparatorwith_ts
auto_prefix_mode
.auto_prefix_mode
now notes some corner cases in which it returns different results than total_order_seek
, due to design bugs that are not easily fixed. Users using built-in comparators and keys at least the size of a fixed prefix length are not affected.WriteOptions::protection_bytes_per_key
, which can be used to enable key-value integrity protection for live updates.blob_garbage_collection_policy
and blob_garbage_collection_age_cutoff
to both force-enable and force-disable GC, as well as selectively override age cutoff when using CompactRange.GetSortedWalFiles()
(also used by GetLiveFilesStorageInfo()
, BackupEngine
, and Checkpoint
) to reduce risk of successfully created backup or checkpoint failing to open because of missing WAL file.blob_file_starting_level
to enable writing blob files during flushes and compactions starting from the specified LSM tree level.MultiGet()
APIsPublished by ltamasi over 2 years ago
SyncWAL()
on the only WAL file of the db will not log the event in MANIFEST, thus allowing a subsequent DB::Open
even if the WAL file is missing or corrupted.avoid_flush_during_recovery == true
by removing valid WALs, leading to Status::Corruption
with message like "SST file is ahead of WALs" when attempting to reopen.Delete
to remove keys, even if the keys should be removed with SingleDelete
. Mixing Delete
and SingleDelete
may cause undefined behavior.WritableFileWriter::WriteDirect
and WritableFileWriter::WriteDirectWithChecksum
. The rate_limiter_priority specified in ReadOptions was not passed to the RateLimiter when requesting a token.verify_sst_unique_id_in_manifest
is introduced to enable/disable the verification, if enabled all SST files will be opened during DB-open to verify the unique id (default is false), so it's recommended to use it with max_open_files = -1
to pre-open the files.SingleDelete
to mark a key as removed.BlockBasedTableOptions::cache_usage_options
and use that to replace BlockBasedTableOptions::reserve_table_builder_memory
and BlockBasedTableOptions::reserve_table_reader_memory
.GetUniqueIdFromTableProperties
to return a 128-bit unique identifier, which will be the standard size now. The old functionality (192-bit) is available from GetExtendedUniqueIdFromTableProperties
. Both functions are no longer "experimental" and are ready for production use.prio
as deprecated for future removal.file_system.h
, mark IOPriority
as deprecated for future removal.CompressionOptions::use_zstd_dict_trainer
, to indicate whether zstd dictionary trainer should be used for generating zstd compression dictionaries. The default value of this option is true for backward compatibility. When this option is set to false, zstd API ZDICT_finalizeDictionary
is used to generate compression dictionaries.--try_load_options
default to true if --db
is specified and not creating a new DB, the user can still explicitly disable that by --try_load_options=false
(or explicitly enable that by --try_load_options
).Published by jay-zhuang over 2 years ago
avoid_flush_during_recovery == true
by removing valid WALs, leading to Status::Corruption
with message like "SST file is ahead of WALs" when attempting to reopen.rocksdb.read.block.compaction.micros
cannot track compaction stats (#9722).file_type
, relative_filename
and directory
fields returned by GetLiveFilesMetaData()
, which were added in inheriting from FileStorageInfo
.track_and_verify_wals_in_manifest
. Without the fix, application may see "open error: Corruption: Missing WAL with log number" while trying to open the db. The corruption is a false alarm but prevents DB open (#9766).BlockBasedTableOptions::reserve_table_reader_memory = true
.rocksdb.live-blob-file-garbage-size
that exposes the total amount of garbage in the blob files in the current version.initial_auto_readahead_size
which now can be configured through BlockBasedTableOptions.GetMapProperty()
with property kBlockCacheEntryStats
can now use the functions in BlockCacheEntryStatsMapKeys
to find stats in the map.fail_if_not_bottommost_level
to IngestExternalFileOptions so that ingestion will fail if the file(s) cannot be ingested to the bottommost level.is_in_sec_cache
to SecondaryCache::Lookup()
. It is to indicate whether the handle is possibly erased from the secondary cache after the Lookup.Published by hx235 over 2 years ago
rocksdb.read.block.compaction.micros
cannot track compaction stats (#9722).file_type
, relative_filename
and directory
fields returned by GetLiveFilesMetaData()
, which were added in inheriting from FileStorageInfo
.track_and_verify_wals_in_manifest
. Without the fix, application may see "open error: Corruption: Missing WAL with log number" while trying to open the db. The corruption is a false alarm but prevents DB open (#9766).Published by hx235 over 2 years ago
TransactionDB
layer APIs do not allow timestamps because we require that all user-defined-timestamps-aware operations go through the Transaction
APIs.ldb
BlockBasedTableOptions::detect_filter_construct_corruption
can now be dynamically configured using DB::SetOptions
.UpdateManifestForFilesState
or ldb update_manifest --update_temperatures
).versions_
between DBImpl::ResumeImpl()
and threads waiting for recovery to complete (#9496)options.compression
even options.compression_per_level
is set.DisableManualCompaction
. Also DB close can cancel the manual compaction thread.alive_log_files_
in non-two-write-queues mode. The race is between the write_thread_ in WriteToWAL() and another thread executing FindObsoleteFiles()
. The race condition will be caught if __glibcxx_requires_nonempty
is enabled.Iterator::Refresh()
reads stale keys after DeleteRange() performed.options.compression_per_level
is dynamically changeable with SetOptions()
.WriteOptions::rate_limiter_priority
. When set to something other than Env::IO_TOTAL
, the internal rate limiter (DBOptions::rate_limiter
) will be charged at the specified priority for writes associated with the API to which the WriteOptions
was provided. Currently the support covers automatic WAL flushes, which happen during live updates (Put()
, Write()
, Delete()
, etc.) when WriteOptions::disableWAL == false
and DBOptions::manual_wal_flush == false
.Published by ajkr over 2 years ago
alive_log_files_
in non-two-write-queues mode. The race is between the write_thread_ in WriteToWAL() and another thread executing FindObsoleteFiles()
. The race condition will be caught if __glibcxx_requires_nonempty
is enabled.rocksdb.read.block.compaction.micros
cannot track compaction stats (#9722).Published by ajkr over 2 years ago
alive_log_files_
in non-two-write-queues mode. The race is between the write_thread_ in WriteToWAL() and another thread executing FindObsoleteFiles()
. The race condition will be caught if __glibcxx_requires_nonempty
is enabled.rocksdb.read.block.compaction.micros
cannot track compaction stats (#9722).Published by jay-zhuang over 2 years ago
Iterator::Refresh()
reads stale keys after DeleteRange() performed.