Skip to content

Commit 59a71b3

Browse files
committed
Document monitor archival idempotency requirement.
1 parent 66fb520 commit 59a71b3

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

lightning/src/chain/chainmonitor.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,13 @@ pub trait Persist<ChannelSigner: EcdsaChannelSigner> {
162162
///
163163
/// Archiving the data in a backup location (rather than deleting it fully) is useful for
164164
/// hedging against data loss in case of unexpected failure.
165+
///
166+
/// Note that if a crash occurs during the archiving process, a state may emerge where the
167+
/// monitor is copied to the archive path but isn't removed yet. In that scenario, the monitor
168+
/// would still end up being loaded on startup pending successful archival completion.
169+
/// Additionally, this scenario might see the monitor being written to the archive path twice,
170+
/// which is why this method must be idempotent and be able to handle monitors already existing
171+
/// in the archive directory.
165172
fn archive_persisted_channel(&self, channel_funding_outpoint: OutPoint);
166173
}
167174

0 commit comments

Comments
 (0)