From e52550cfec700380b91d893a98bd427e25c1fd0b Mon Sep 17 00:00:00 2001 From: Riccardo Casatta Date: Tue, 27 Jul 2021 11:38:11 +0200 Subject: [PATCH 1/3] Add flush method to Database trait --- src/database/any.rs | 4 ++++ src/database/keyvalue.rs | 4 ++++ src/database/memory.rs | 4 ++++ src/database/mod.rs | 3 +++ 4 files changed, 15 insertions(+) diff --git a/src/database/any.rs b/src/database/any.rs index cc5fcc1c..dbdd2d09 100644 --- a/src/database/any.rs +++ b/src/database/any.rs @@ -233,6 +233,10 @@ impl Database for AnyDatabase { fn increment_last_index(&mut self, keychain: KeychainKind) -> Result { impl_inner_method!(AnyDatabase, self, increment_last_index, keychain) } + + fn flush(&mut self) -> Result<(), Error> { + impl_inner_method!(AnyDatabase, self, flush) + } } impl BatchOperations for AnyBatch { diff --git a/src/database/keyvalue.rs b/src/database/keyvalue.rs index 9978497d..2da92f22 100644 --- a/src/database/keyvalue.rs +++ b/src/database/keyvalue.rs @@ -367,6 +367,10 @@ impl Database for Tree { Ok(val) }) } + + fn flush(&mut self) -> Result<(), Error> { + Ok(Tree::flush(self).map(|_| ())?) + } } impl BatchDatabase for Tree { diff --git a/src/database/memory.rs b/src/database/memory.rs index df56ef63..c42518db 100644 --- a/src/database/memory.rs +++ b/src/database/memory.rs @@ -419,6 +419,10 @@ impl Database for MemoryDatabase { Ok(*value) } + + fn flush(&mut self) -> Result<(), Error> { + Ok(()) + } } impl BatchDatabase for MemoryDatabase { diff --git a/src/database/mod.rs b/src/database/mod.rs index 217153fd..38c6d3bd 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -134,6 +134,9 @@ pub trait Database: BatchOperations { /// /// It should insert and return `0` if not present in the database fn increment_last_index(&mut self, keychain: KeychainKind) -> Result; + + /// Force changes to be written to disk, returning the number of bytes written + fn flush(&mut self) -> Result<(), Error>; } /// Trait for a database that supports batch operations From fe30716fa2ba59eb8e94cfa6a506597ab7febb1f Mon Sep 17 00:00:00 2001 From: Riccardo Casatta Date: Tue, 27 Jul 2021 12:13:57 +0200 Subject: [PATCH 2/3] update CHANGELOG citing new flush method --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index db401649..48440aea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added `RpcBlockchain` in the `AnyBlockchain` struct to allow using Rpc backend where `AnyBlockchain` is used (eg `bdk-cli`) - Removed hard dependency on `tokio`. +- Added `flush` method to the `Database` trait to explicitly flush to disk latest changes on the db. ### Wallet From 19d74955e2c8c0701dc8acda8f3189489b393104 Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Thu, 19 Aug 2021 13:56:38 +0200 Subject: [PATCH 3/3] Update Database BatchOperations flush() documentation --- src/database/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/database/mod.rs b/src/database/mod.rs index 38c6d3bd..6dbecc66 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -135,7 +135,7 @@ pub trait Database: BatchOperations { /// It should insert and return `0` if not present in the database fn increment_last_index(&mut self, keychain: KeychainKind) -> Result; - /// Force changes to be written to disk, returning the number of bytes written + /// Force changes to be written to disk fn flush(&mut self) -> Result<(), Error>; }