add conf item to re-disable atomic flush

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2025-02-07 23:18:02 +00:00 committed by strawberry
parent e123a5b660
commit ecc9099127
3 changed files with 16 additions and 2 deletions

View file

@ -925,6 +925,13 @@
#
#rocksdb_checksums = true
# Enables the "atomic flush" mode in rocksdb. This option is not intended
# for users. It may be removed or ignored in future versions. Atomic flush
# may be enabled by the paranoid to possibly improve database integrity at
# the cost of performance.
#
#rocksdb_atomic_flush = false
# Database repair mode (for RocksDB SST corruption).
#
# Use this option when the server reports corruption while running or

View file

@ -1089,6 +1089,13 @@ pub struct Config {
#[serde(default = "true_fn")]
pub rocksdb_checksums: bool,
/// Enables the "atomic flush" mode in rocksdb. This option is not intended
/// for users. It may be removed or ignored in future versions. Atomic flush
/// may be enabled by the paranoid to possibly improve database integrity at
/// the cost of performance.
#[serde(default)]
pub rocksdb_atomic_flush: bool,
/// Database repair mode (for RocksDB SST corruption).
///
/// Use this option when the server reports corruption while running or

View file

@ -29,9 +29,9 @@ pub(crate) fn db_options(config: &Config, env: &Env, row_cache: &Cache) -> Resul
opts.set_max_file_opening_threads(0);
// IO
opts.set_atomic_flush(true);
opts.set_manual_wal_flush(true);
opts.set_enable_pipelined_write(false);
opts.set_atomic_flush(config.rocksdb_atomic_flush);
opts.set_enable_pipelined_write(!config.rocksdb_atomic_flush);
if config.rocksdb_direct_io {
opts.set_use_direct_reads(true);
opts.set_use_direct_io_for_flush_and_compaction(true);