From 6b1933914d95f0b9923281c9c9d6401b4793a821 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Fri, 22 Mar 2024 19:37:36 -0700 Subject: [PATCH] add file listing to database abstraction. Signed-off-by: Jason Volk --- src/database/abstraction.rs | 2 ++ src/database/abstraction/rocksdb.rs | 24 ++++++++++++++++++++++++ src/database/key_value/globals.rs | 2 ++ src/service/globals/data.rs | 1 + 4 files changed, 29 insertions(+) diff --git a/src/database/abstraction.rs b/src/database/abstraction.rs index 45e62b6b..aa495038 100644 --- a/src/database/abstraction.rs +++ b/src/database/abstraction.rs @@ -34,6 +34,8 @@ pub(crate) trait KeyValueDatabaseEngine: Send + Sync { fn backup(&self) -> Result<(), Box> { unimplemented!() } fn backup_list(&self) -> Result { Ok(String::new()) } + + fn file_list(&self) -> Result { Ok(String::new()) } } pub(crate) trait KvTree: Send + Sync { diff --git a/src/database/abstraction/rocksdb.rs b/src/database/abstraction/rocksdb.rs index 597552df..0c9b0e54 100644 --- a/src/database/abstraction/rocksdb.rs +++ b/src/database/abstraction/rocksdb.rs @@ -304,6 +304,30 @@ impl KeyValueDatabaseEngine for Arc { Ok(res) } + fn file_list(&self) -> Result { + match self.rocks.live_files() { + Err(e) => Ok(String::from(e)), + Ok(files) => { + let mut res = String::new(); + for file in files { + let _ = std::fmt::write( + &mut res, + format_args!( + "L{} {:<13} {:7}+ {:4}- {:9} {}
", + file.level, + file.name, + file.num_entries, + file.num_deletions, + file.size, + file.column_family_name, + ), + ); + } + Ok(res) + }, + } + } + // TODO: figure out if this is needed for rocksdb #[allow(dead_code)] fn clear_caches(&self) {} diff --git a/src/database/key_value/globals.rs b/src/database/key_value/globals.rs index 14aa8d66..dc4988b6 100644 --- a/src/database/key_value/globals.rs +++ b/src/database/key_value/globals.rs @@ -286,4 +286,6 @@ lasttimelinecount_cache: {lasttimelinecount_cache}\n" fn backup(&self) -> Result<(), Box> { self.db.backup() } fn backup_list(&self) -> Result { self.db.backup_list() } + + fn file_list(&self) -> Result { self.db.file_list() } } diff --git a/src/service/globals/data.rs b/src/service/globals/data.rs index 1615b5a0..51cfc6c8 100644 --- a/src/service/globals/data.rs +++ b/src/service/globals/data.rs @@ -37,4 +37,5 @@ pub trait Data: Send + Sync { fn bump_database_version(&self, new_version: u64) -> Result<()>; fn backup(&self) -> Result<(), Box> { unimplemented!() } fn backup_list(&self) -> Result { Ok(String::new()) } + fn file_list(&self) -> Result { Ok(String::new()) } }