From 1ce2beb77455a674888f3e3589723195eaa7b13c Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 5 Jul 2023 17:20:48 +0000 Subject: [PATCH] Move Channel's blocked monitor updates vec to an even TLV In 9dfe42cf8681afc9c3f84e0c85a4e2a30c1156a8, `ChannelMonitorUpdate`s were stored in `Channel` while they were being processed. Because it was possible (though highly unlikely, due to various locking likely blocking persistence) an update was in-flight (even synchronously) when a `ChannelManager` was persisted, the new updates were persisted via an odd TLV. However, in 4041f0899f86eaf6a0a4576a91918fa54026ac46 these pending monitor updates were moved to `ChannelManager`, with appropriate handling there. Now the only `ChannelMonitorUpdate`s which are stored in `Channel` are those which are explicitly blocked, which requires the async pipeline. Because we don't support async monitor update users downgrading to 0.0.115 or lower, we move to persisting them via an even TLV. As the odd TLV storage has not yet been released, we can do so trivially. Fixes #2317. --- lightning/src/ln/channel.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lightning/src/ln/channel.rs b/lightning/src/ln/channel.rs index db3858823..30280f0b1 100644 --- a/lightning/src/ln/channel.rs +++ b/lightning/src/ln/channel.rs @@ -6781,6 +6781,7 @@ impl Writeable for Channel { (5, self.context.config, required), (6, serialized_holder_htlc_max_in_flight, option), (7, self.context.shutdown_scriptpubkey, option), + (8, self.context.blocked_monitor_updates, vec_type), (9, self.context.target_closing_feerate_sats_per_kw, option), (11, self.context.monitor_pending_finalized_fulfills, vec_type), (13, self.context.channel_creation_height, required), @@ -6794,7 +6795,6 @@ impl Writeable for Channel { (28, holder_max_accepted_htlcs, option), (29, self.context.temporary_channel_id, option), (31, channel_pending_event_emitted, option), - (33, self.context.blocked_monitor_updates, vec_type), (35, pending_outbound_skimmed_fees, optional_vec), (37, holding_cell_skimmed_fees, optional_vec), }); @@ -7089,6 +7089,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch (5, config, option), // Note that if none is provided we will *not* overwrite the existing one. (6, holder_max_htlc_value_in_flight_msat, option), (7, shutdown_scriptpubkey, option), + (8, blocked_monitor_updates, vec_type), (9, target_closing_feerate_sats_per_kw, option), (11, monitor_pending_finalized_fulfills, vec_type), (13, channel_creation_height, option), @@ -7102,7 +7103,6 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch (28, holder_max_accepted_htlcs, option), (29, temporary_channel_id, option), (31, channel_pending_event_emitted, option), - (33, blocked_monitor_updates, vec_type), (35, pending_outbound_skimmed_fees_opt, optional_vec), (37, holding_cell_skimmed_fees_opt, optional_vec), }); -- 2.39.5