mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 07:17:40 +01:00
Merge pull request #1029 from TheBlueMatt/2021-07-log-channel-close
Log when a channel is closed on startup due to stale ChannelManager
This commit is contained in:
commit
853007800e
2 changed files with 5 additions and 0 deletions
|
@ -39,6 +39,7 @@ use std::ops::Deref;
|
|||
/// then there is a risk of channels force-closing on startup when the manager realizes it's
|
||||
/// outdated. However, as long as `ChannelMonitor` backups are sound, no funds besides those used
|
||||
/// for unilateral chain closure fees are at risk.
|
||||
#[must_use = "BackgroundProcessor will immediately stop on drop. It should be stored until shutdown."]
|
||||
pub struct BackgroundProcessor {
|
||||
stop_thread: Arc<AtomicBool>,
|
||||
thread_handle: Option<JoinHandle<Result<(), std::io::Error>>>,
|
||||
|
|
|
@ -5000,6 +5000,10 @@ impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
|
|||
channel.get_cur_counterparty_commitment_transaction_number() > monitor.get_cur_counterparty_commitment_number() ||
|
||||
channel.get_latest_monitor_update_id() < monitor.get_latest_update_id() {
|
||||
// But if the channel is behind of the monitor, close the channel:
|
||||
log_error!(args.logger, "A ChannelManager is stale compared to the current ChannelMonitor!");
|
||||
log_error!(args.logger, " The channel will be force-closed and the latest commitment transaction from the ChannelMonitor broadcast.");
|
||||
log_error!(args.logger, " The ChannelMonitor for channel {} is at update_id {} but the ChannelManager is at update_id {}.",
|
||||
log_bytes!(channel.channel_id()), monitor.get_latest_update_id(), channel.get_latest_monitor_update_id());
|
||||
let (_, mut new_failed_htlcs) = channel.force_shutdown(true);
|
||||
failed_htlcs.append(&mut new_failed_htlcs);
|
||||
monitor.broadcast_latest_holder_commitment_txn(&args.tx_broadcaster, &args.logger);
|
||||
|
|
Loading…
Add table
Reference in a new issue