conf item to toggle periodic cleanup for rocksdb

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-04-06 17:37:56 -07:00 committed by June
parent 865b5d7241
commit bade4ed17f
3 changed files with 12 additions and 0 deletions

View file

@ -441,6 +441,11 @@ url_preview_check_root_domain = false
# Defaults to 1 (TolerateCorruptedTailRecords) # Defaults to 1 (TolerateCorruptedTailRecords)
#rocksdb_recovery_mode = 1 #rocksdb_recovery_mode = 1
# Controls whether memory buffers are written to storage at the fixed interval set by `cleanup_period_interval`
# even when they are not full. Setting this will increase load on the storage backplane and is never advised
# under normal circumstances.
#rocksdb_periodic_cleanup = false
### Domain Name Resolution and Caching ### Domain Name Resolution and Caching

View file

@ -211,6 +211,8 @@ pub struct Config {
pub rocksdb_repair: bool, pub rocksdb_repair: bool,
#[serde(default)] #[serde(default)]
pub rocksdb_read_only: bool, pub rocksdb_read_only: bool,
#[serde(default)]
pub rocksdb_periodic_cleanup: bool,
pub emergency_password: Option<String>, pub emergency_password: Option<String>,
@ -635,6 +637,7 @@ impl fmt::Display for Config {
("RocksDB Recovery Mode", &self.rocksdb_recovery_mode.to_string()), ("RocksDB Recovery Mode", &self.rocksdb_recovery_mode.to_string()),
("RocksDB Repair Mode", &self.rocksdb_repair.to_string()), ("RocksDB Repair Mode", &self.rocksdb_repair.to_string()),
("RocksDB Read-only Mode", &self.rocksdb_read_only.to_string()), ("RocksDB Read-only Mode", &self.rocksdb_read_only.to_string()),
("RocksDB Periodic Cleanup", &self.rocksdb_periodic_cleanup.to_string()),
("Prevent Media Downloads From", { ("Prevent Media Downloads From", {
let mut lst = vec![]; let mut lst = vec![];
for domain in &self.prevent_media_downloads_from { for domain in &self.prevent_media_downloads_from {

View file

@ -545,6 +545,10 @@ impl KeyValueDatabase {
} }
fn perform_cleanup() { fn perform_cleanup() {
if !services().globals.config.rocksdb_periodic_cleanup {
return;
}
let start = Instant::now(); let start = Instant::now();
if let Err(e) = services().globals.cleanup() { if let Err(e) = services().globals.cleanup() {
error!(target: "database-cleanup", "Ran into an error during cleanup: {}", e); error!(target: "database-cleanup", "Ran into an error during cleanup: {}", e);