From 9868c63cb2bc92cfaadae4abc6334ecef2ee0542 Mon Sep 17 00:00:00 2001 From: Bartok9 <259807879+Bartok9@users.noreply.github.com> Date: Fri, 11 Sep 2026 08:52:52 -0400 Subject: [PATCH 1/2] fix(close_channel): error when no matching channel found Closes #1084 Previously close_channel and force_close_channel returned Ok(()) when no matching UserChannelId was found for the counterparty, silently succeeding without initiating a close. Now returns Err(ChannelClosingFailed), matching update_channel_config. AI-assisted: generated by Sera (Hermes Agent), verified manually. Tests compile; integration test requires bitcoind/electrs binaries (architecturally incompatible electrs binary in this cron environment, same failure affects all integration tests) Signed-off-by: Bartok9 <259807879+Bartok9@users.noreply.github.com> --- src/lib.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6d13141c6..6d6a65dbd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2156,9 +2156,18 @@ impl Node { // dropping it. This lets `channel_reestablish` drive the recovery flow, which is // especially important against LND peers that don't always handle force-closure // error messages correctly. - } - Ok(()) + Ok(()) + } else { + log_error!( + self.logger, + "Failed to {} channel: no matching channel found for user_channel_id {} and counterparty {}", + if force { "force-close" } else { "close" }, + user_channel_id, + counterparty_node_id + ); + Err(Error::ChannelClosingFailed) + } } /// Update the config for a previously opened channel. From 2f63c5f83b2e893a836d53458814eb806ef5945c Mon Sep 17 00:00:00 2001 From: Bartok9 <259807879+Bartok9@users.noreply.github.com> Date: Thu, 17 Sep 2026 06:47:57 -0400 Subject: [PATCH 2/2] =?UTF-8?q?ci:=20retrigger=20flaky=20reorg=5Ftest=20(m?= =?UTF-8?q?acOS=201.85.0=20timeout=20was=20a=20timing=20flake=20=E2=80=94?= =?UTF-8?q?=20stable+beta=20green=20on=20same=20SHA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit