Skip to content

Commit 8f50f3c

Browse files
committed
Logging and documenting error message
1 parent 09c77b8 commit 8f50f3c

File tree

15 files changed

+60
-57
lines changed

15 files changed

+60
-57
lines changed

fuzz/src/full_stack.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ pub fn do_test(mut data: &[u8], logger: &Arc<dyn Logger>) {
737737
let error_message = "Channel force-closed";
738738
if channel_id >= channels.len() { return; }
739739
channels.sort_by(|a, b| { a.channel_id.cmp(&b.channel_id) });
740-
channelmanager.force_close_broadcasting_latest_txn(&channels[channel_id].channel_id, &channels[channel_id].counterparty.node_id, &error_message).unwrap();
740+
channelmanager.force_close_broadcasting_latest_txn(&channels[channel_id].channel_id, &channels[channel_id].counterparty.node_id, error_message.to_string()).unwrap();
741741
},
742742
// 15, 16, 17, 18 is above
743743
19 => {

lightning-background-processor/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1416,7 +1416,7 @@ mod tests {
14161416

14171417
// Force-close the channel.
14181418
let error_message = "Channel force-closed";
1419-
nodes[0].node.force_close_broadcasting_latest_txn(&ChannelId::v1_from_funding_outpoint(OutPoint { txid: tx.txid(), index: 0 }), &nodes[1].node.get_our_node_id(), &error_message).unwrap();
1419+
nodes[0].node.force_close_broadcasting_latest_txn(&ChannelId::v1_from_funding_outpoint(OutPoint { txid: tx.txid(), index: 0 }), &nodes[1].node.get_our_node_id(), error_message.to_string()).unwrap();
14201420

14211421
// Check that the force-close updates are persisted.
14221422
check_persisted_data!(nodes[0].node, filepath.clone());
@@ -1610,7 +1610,7 @@ mod tests {
16101610

16111611
// Force close the channel and check that the SpendableOutputs event was handled.
16121612
let error_message = "Channel force-closed";
1613-
nodes[0].node.force_close_broadcasting_latest_txn(&nodes[0].node.list_channels()[0].channel_id, &nodes[1].node.get_our_node_id(), &error_message).unwrap();
1613+
nodes[0].node.force_close_broadcasting_latest_txn(&nodes[0].node.list_channels()[0].channel_id, &nodes[1].node.get_our_node_id(), error_message.to_string()).unwrap();
16141614
let commitment_tx = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().pop().unwrap();
16151615
confirm_transaction_depth(&mut nodes[0], &commitment_tx, BREAKDOWN_TIMEOUT as u32);
16161616

lightning-persister/src/fs_store.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ mod tests {
447447
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
448448
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
449449
let error_message = "Channel force-closed";
450-
nodes[1].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[0].node.get_our_node_id(), &error_message).unwrap();
450+
nodes[1].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[0].node.get_our_node_id(), error_message.to_string()).unwrap();
451451
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
452452
let mut added_monitors = nodes[1].chain_monitor.added_monitors.lock().unwrap();
453453
let update_map = nodes[1].chain_monitor.latest_monitor_update_id.lock().unwrap();
@@ -487,7 +487,7 @@ mod tests {
487487
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
488488
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
489489
let error_message = "Channel force-closed";
490-
nodes[1].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[0].node.get_our_node_id(), &error_message).unwrap();
490+
nodes[1].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[0].node.get_our_node_id(), error_message.to_string()).unwrap();
491491
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
492492
let mut added_monitors = nodes[1].chain_monitor.added_monitors.lock().unwrap();
493493
let update_map = nodes[1].chain_monitor.latest_monitor_update_id.lock().unwrap();

lightning-persister/src/test_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ pub(crate) fn do_test_store<K: KVStore>(store_0: &K, store_1: &K) {
105105
// Force close because cooperative close doesn't result in any persisted
106106
// updates.
107107
let error_message = "Channel force-closed";
108-
nodes[0].node.force_close_broadcasting_latest_txn(&nodes[0].node.list_channels()[0].channel_id, &nodes[1].node.get_our_node_id(), &error_message).unwrap();
108+
nodes[0].node.force_close_broadcasting_latest_txn(&nodes[0].node.list_channels()[0].channel_id, &nodes[1].node.get_our_node_id(), error_message.to_string()).unwrap();
109109
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
110110
check_closed_broadcast!(nodes[0], true);
111111
check_added_monitors!(nodes[0], 1);

lightning/src/ln/blinded_payment_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ fn do_forward_fail_in_process_pending_htlc_fwds(check: ProcessPendingHTLCsCheck)
362362
ProcessPendingHTLCsCheck::FwdChannelClosed => {
363363
// Force close the next-hop channel so when we go to forward in process_pending_htlc_forwards,
364364
// the intro node will error backwards.
365-
nodes[1].node.force_close_broadcasting_latest_txn(&channel_id, &nodes[2].node.get_our_node_id(), &error_message).unwrap();
365+
nodes[1].node.force_close_broadcasting_latest_txn(&channel_id, &nodes[2].node.get_our_node_id(), error_message.to_string()).unwrap();
366366
let events = nodes[1].node.get_and_clear_pending_events();
367367
match events[0] {
368368
crate::events::Event::PendingHTLCsForwardable { .. } => {},

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool) {
207207

208208
// ...and make sure we can force-close a frozen channel
209209
let error_message = "Channel force-closed";
210-
nodes[0].node.force_close_broadcasting_latest_txn(&channel_id, &nodes[1].node.get_our_node_id(), &error_message).unwrap();
210+
nodes[0].node.force_close_broadcasting_latest_txn(&channel_id, &nodes[1].node.get_our_node_id(), error_message.to_string()).unwrap();
211211
check_added_monitors!(nodes[0], 1);
212212
check_closed_broadcast!(nodes[0], true);
213213

@@ -3227,13 +3227,13 @@ fn do_test_durable_preimages_on_closed_channel(close_chans_before_reload: bool,
32273227
if close_chans_before_reload {
32283228
if !close_only_a {
32293229
chanmon_cfgs[1].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
3230-
nodes[1].node.force_close_broadcasting_latest_txn(&chan_id_bc, &nodes[2].node.get_our_node_id(), &error_message).unwrap();
3230+
nodes[1].node.force_close_broadcasting_latest_txn(&chan_id_bc, &nodes[2].node.get_our_node_id(), error_message.to_string()).unwrap();
32313231
check_closed_broadcast(&nodes[1], 1, true);
32323232
check_closed_event(&nodes[1], 1, ClosureReason::HolderForceClosed, false, &[nodes[2].node.get_our_node_id()], 100000);
32333233
}
32343234

32353235
chanmon_cfgs[1].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
3236-
nodes[1].node.force_close_broadcasting_latest_txn(&chan_id_ab, &nodes[0].node.get_our_node_id(), &error_message).unwrap();
3236+
nodes[1].node.force_close_broadcasting_latest_txn(&chan_id_ab, &nodes[0].node.get_our_node_id(), error_message.to_string()).unwrap();
32373237
check_closed_broadcast(&nodes[1], 1, true);
32383238
check_closed_event(&nodes[1], 1, ClosureReason::HolderForceClosed, false, &[nodes[0].node.get_our_node_id()], 100000);
32393239
}
@@ -3256,7 +3256,7 @@ fn do_test_durable_preimages_on_closed_channel(close_chans_before_reload: bool,
32563256
}
32573257
let error_message = "Channel force-closed";
32583258

3259-
nodes[0].node.force_close_broadcasting_latest_txn(&chan_id_ab, &nodes[1].node.get_our_node_id(), &error_message).unwrap();
3259+
nodes[0].node.force_close_broadcasting_latest_txn(&chan_id_ab, &nodes[1].node.get_our_node_id(), error_message.to_string()).unwrap();
32603260
check_closed_event(&nodes[0], 1, ClosureReason::HolderForceClosed, false, &[nodes[1].node.get_our_node_id()], 100000);
32613261
let as_closing_tx = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
32623262
assert_eq!(as_closing_tx.len(), 1);
@@ -3397,7 +3397,7 @@ fn do_test_reload_mon_update_completion_actions(close_during_reload: bool) {
33973397
if close_during_reload {
33983398
// Test that we still free the B<->C channel if the A<->B channel closed while we reloaded
33993399
// (as learned about during the on-reload block connection).
3400-
nodes[0].node.force_close_broadcasting_latest_txn(&chan_id_ab, &nodes[1].node.get_our_node_id(), &error_message).unwrap();
3400+
nodes[0].node.force_close_broadcasting_latest_txn(&chan_id_ab, &nodes[1].node.get_our_node_id(), error_message.to_string()).unwrap();
34013401
check_added_monitors!(nodes[0], 1);
34023402
check_closed_broadcast!(nodes[0], true);
34033403
check_closed_event(&nodes[0], 1, ClosureReason::HolderForceClosed, false, &[nodes[1].node.get_our_node_id()], 100_000);

lightning/src/ln/channelmanager.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2986,8 +2986,9 @@ where
29862986
Ok(counterparty_node_id)
29872987
}
29882988

2989-
fn force_close_sending_error(&self, channel_id: &ChannelId, counterparty_node_id: &PublicKey, broadcast: bool, error_message: &str) -> Result<(), APIError> {
2989+
fn force_close_sending_error(&self, channel_id: &ChannelId, counterparty_node_id: &PublicKey, broadcast: bool, error_message: String) -> Result<(), APIError> {
29902990
let _persistence_guard = PersistenceNotifierGuard::notify_on_drop(self);
2991+
log_debug!(self.logger, "The error message {} sent to the peer", error_message);
29912992
match self.force_close_channel_with_peer(channel_id, counterparty_node_id, None, broadcast) {
29922993
Ok(counterparty_node_id) => {
29932994
let per_peer_state = self.per_peer_state.read().unwrap();
@@ -3012,7 +3013,9 @@ where
30123013
/// rejecting new HTLCs on the given channel. Fails if `channel_id` is unknown to
30133014
/// the manager, or if the `counterparty_node_id` isn't the counterparty of the corresponding
30143015
/// channel.
3015-
pub fn force_close_broadcasting_latest_txn(&self, channel_id: &ChannelId, counterparty_node_id: &PublicKey, error_message: &str)
3016+
/// # Arguments
3017+
/// * `error_message` - The error message to be sent to the peer. This string will be sent to our peer.
3018+
pub fn force_close_broadcasting_latest_txn(&self, channel_id: &ChannelId, counterparty_node_id: &PublicKey, error_message: String)
30163019
-> Result<(), APIError> {
30173020
self.force_close_sending_error(channel_id, counterparty_node_id, true, error_message)
30183021
}
@@ -3023,24 +3026,24 @@ where
30233026
///
30243027
/// You can always get the latest local transaction(s) to broadcast from
30253028
/// [`ChannelMonitor::get_latest_holder_commitment_txn`].
3026-
pub fn force_close_without_broadcasting_txn(&self, channel_id: &ChannelId, counterparty_node_id: &PublicKey, error_message: &str)
3029+
pub fn force_close_without_broadcasting_txn(&self, channel_id: &ChannelId, counterparty_node_id: &PublicKey, error_message: String)
30273030
-> Result<(), APIError> {
30283031
self.force_close_sending_error(channel_id, counterparty_node_id, false, error_message)
30293032
}
30303033

30313034
/// Force close all channels, immediately broadcasting the latest local commitment transaction
30323035
/// for each to the chain and rejecting new HTLCs on each.
3033-
pub fn force_close_all_channels_broadcasting_latest_txn(&self, error_message: &str) {
3036+
pub fn force_close_all_channels_broadcasting_latest_txn(&self, error_message: String) {
30343037
for chan in self.list_channels() {
3035-
let _ = self.force_close_broadcasting_latest_txn(&chan.channel_id, &chan.counterparty.node_id, error_message);
3038+
let _ = self.force_close_broadcasting_latest_txn(&chan.channel_id, &chan.counterparty.node_id, error_message.clone());
30363039
}
30373040
}
30383041

30393042
/// Force close all channels rejecting new HTLCs on each but without broadcasting the latest
30403043
/// local transaction(s).
3041-
pub fn force_close_all_channels_without_broadcasting_txn(&self, error_message: &str) {
3044+
pub fn force_close_all_channels_without_broadcasting_txn(&self, error_message: String) {
30423045
for chan in self.list_channels() {
3043-
let _ = self.force_close_without_broadcasting_txn(&chan.channel_id, &chan.counterparty.node_id, error_message);
3046+
let _ = self.force_close_without_broadcasting_txn(&chan.channel_id, &chan.counterparty.node_id, error_message.clone());
30443047
}
30453048
}
30463049

@@ -11744,7 +11747,7 @@ mod tests {
1174411747
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id());
1174511748
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id());
1174611749
let error_message = "Channel force-closed";
11747-
nodes[0].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[1].node.get_our_node_id(), &error_message).unwrap();
11750+
nodes[0].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[1].node.get_our_node_id(), error_message.to_string()).unwrap();
1174811751
check_closed_broadcast!(nodes[0], true);
1174911752
check_added_monitors!(nodes[0], 1);
1175011753
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
@@ -11970,9 +11973,9 @@ mod tests {
1197011973

1197111974
check_unkown_peer_error(nodes[0].node.close_channel(&channel_id, &unkown_public_key), unkown_public_key);
1197211975

11973-
check_unkown_peer_error(nodes[0].node.force_close_broadcasting_latest_txn(&channel_id, &unkown_public_key, &error_message), unkown_public_key);
11976+
check_unkown_peer_error(nodes[0].node.force_close_broadcasting_latest_txn(&channel_id, &unkown_public_key, error_message.to_string()), unkown_public_key);
1197411977

11975-
check_unkown_peer_error(nodes[0].node.force_close_without_broadcasting_txn(&channel_id, &unkown_public_key, &error_message), unkown_public_key);
11978+
check_unkown_peer_error(nodes[0].node.force_close_without_broadcasting_txn(&channel_id, &unkown_public_key, error_message.to_string()), unkown_public_key);
1197611979

1197711980
check_unkown_peer_error(nodes[0].node.forward_intercepted_htlc(intercept_id, &channel_id, unkown_public_key, 1_000_000), unkown_public_key);
1197811981

@@ -12001,9 +12004,9 @@ mod tests {
1200112004

1200212005
check_channel_unavailable_error(nodes[0].node.close_channel(&channel_id, &counterparty_node_id), channel_id, counterparty_node_id);
1200312006

12004-
check_channel_unavailable_error(nodes[0].node.force_close_broadcasting_latest_txn(&channel_id, &counterparty_node_id, &error_message), channel_id, counterparty_node_id);
12007+
check_channel_unavailable_error(nodes[0].node.force_close_broadcasting_latest_txn(&channel_id, &counterparty_node_id, error_message.to_string()), channel_id, counterparty_node_id);
1200512008

12006-
check_channel_unavailable_error(nodes[0].node.force_close_without_broadcasting_txn(&channel_id, &counterparty_node_id, &error_message), channel_id, counterparty_node_id);
12009+
check_channel_unavailable_error(nodes[0].node.force_close_without_broadcasting_txn(&channel_id, &counterparty_node_id, error_message.to_string()), channel_id, counterparty_node_id);
1200712010

1200812011
check_channel_unavailable_error(nodes[0].node.forward_intercepted_htlc(InterceptId([0; 32]), &channel_id, counterparty_node_id, 1_000_000), channel_id, counterparty_node_id);
1200912012

@@ -12367,7 +12370,7 @@ mod tests {
1236712370
let events = nodes[1].node.get_and_clear_pending_events();
1236812371
match events[0] {
1236912372
Event::OpenChannelRequest { temporary_channel_id, .. } => {
12370-
nodes[1].node.force_close_broadcasting_latest_txn(&temporary_channel_id, &nodes[0].node.get_our_node_id(), &error_message).unwrap();
12373+
nodes[1].node.force_close_broadcasting_latest_txn(&temporary_channel_id, &nodes[0].node.get_our_node_id(), error_message.to_string()).unwrap();
1237112374
}
1237212375
_ => panic!("Unexpected event"),
1237312376
}
@@ -12481,7 +12484,7 @@ mod tests {
1248112484
let (_, _, chan_id, funding_tx) = create_announced_chan_between_nodes(&nodes, 0, 1);
1248212485
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id());
1248312486
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id());
12484-
nodes[0].node.force_close_broadcasting_latest_txn(&chan_id, &nodes[1].node.get_our_node_id(), &error_message).unwrap();
12487+
nodes[0].node.force_close_broadcasting_latest_txn(&chan_id, &nodes[1].node.get_our_node_id(), error_message.to_string()).unwrap();
1248512488
check_closed_broadcast(&nodes[0], 1, true);
1248612489
check_added_monitors(&nodes[0], 1);
1248712490
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);

0 commit comments

Comments
 (0)