From 6528eb8bdd84a994430365a5d9b369a3cd657ab6 Mon Sep 17 00:00:00 2001 From: Oscar Pepper Date: Sat, 13 Jun 2026 11:03:57 +0100 Subject: [PATCH] clear save flag after persist --- zingolib/src/lightclient/save.rs | 4 +++- zingolib/src/wallet.rs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/zingolib/src/lightclient/save.rs b/zingolib/src/lightclient/save.rs index a9fcadccb..1d0d3dc57 100644 --- a/zingolib/src/lightclient/save.rs +++ b/zingolib/src/lightclient/save.rs @@ -55,8 +55,10 @@ impl LightClient { let save_handle = tokio::spawn(async move { loop { interval.tick().await; - if let Some(wallet_bytes) = wallet.write().await.save()? { + let mut wallet_guard = wallet.write().await; + if let Some(wallet_bytes) = wallet_guard.save()? { write_to_path(&wallet_path, &wallet_bytes)?; + wallet_guard.save_required = false; } if !save_active.load(atomic::Ordering::Acquire) { return Ok(()); diff --git a/zingolib/src/wallet.rs b/zingolib/src/wallet.rs index cc7aabd05..29e14b59d 100644 --- a/zingolib/src/wallet.rs +++ b/zingolib/src/wallet.rs @@ -366,12 +366,12 @@ impl LightWallet { /// /// Intended to be called from a save task which calls `save` in a loop, awaiting the wallet lock and checking /// `self.save_required` status, writing the returned wallet bytes to persistance. + /// `save_required` field must be manually set back to false after wallet data has been successfully persisted to disk. pub fn save(&mut self) -> std::io::Result>> { if self.save_required { let chain_type = self.chain_type; let mut wallet_bytes: Vec = vec![]; self.write(&mut wallet_bytes, &chain_type)?; - self.save_required = false; Ok(Some(wallet_bytes)) } else { Ok(None)