From: Arik Sosman Date: Thu, 19 Sep 2024 16:30:49 +0000 (+0900) Subject: Document monitor archival idempotency requirement. X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=268675a743b7aa9740e00fff740e1cd85b1f1e92;p=rust-lightning Document monitor archival idempotency requirement. --- diff --git a/lightning/src/chain/chainmonitor.rs b/lightning/src/chain/chainmonitor.rs index afd9df628..4e578ff9c 100644 --- a/lightning/src/chain/chainmonitor.rs +++ b/lightning/src/chain/chainmonitor.rs @@ -162,6 +162,13 @@ pub trait Persist { /// /// Archiving the data in a backup location (rather than deleting it fully) is useful for /// hedging against data loss in case of unexpected failure. + /// + /// Note that if a crash occurs during the archiving process, and its implementation is not + /// atomic, a state may emerge with the archival operation only being partially complete. In + /// that scenario, the monitor may still be loaded on startup pending successful completion of + /// the archive process. Additionally, because the archive operation could be retried on + /// restart, this method must in that case be idempotent, ensuring it can handle scenarios where + /// the monitor already exists in the archive. fn archive_persisted_channel(&self, channel_funding_outpoint: OutPoint); }