tests: add xfail-strict reproducer for funder-side stuck CHANNELD_AWAITING_LOCKIN#9113
tests: add xfail-strict reproducer for funder-side stuck CHANNELD_AWAITING_LOCKIN#9113ksedgwic wants to merge 2 commits intoElementsProject:masterfrom
Conversation
…ITING_LOCKIN When a node is the funder of a channel whose funding tx never confirms (broadcast rejected at ATMP, evicted from mempool, or simply never broadcast), the channel record stays in CHANNELD_AWAITING_LOCKIN indefinitely. CLN already implements the BOLT 2 fundee-side forget rule (PR ElementsProject#1468, --max-funding-unconfirmed-blocks, default 2016) but has no equivalent on the funder side. The test asserts the desired post-fix behavior (state has moved beyond CHANNELD_AWAITING_LOCKIN) and is marked @pytest.mark.xfail(strict=True) so: - CI reports XFAIL today (acceptable; documents the open bug) - When the bug is fixed, the test reports XPASS, which strict=True promotes to a hard failure to alert the dev to remove the marker. Changelog-None
…LATERAL Same root cause as the previous test_funder_stuck_no_funding_confirm (funding tx unbroadcastable/unconfirmable, no funder-side cleanup). This variant covers the second symptom: when the operator (or an automation like CLBOSS's spenderp) issues `close` on the AWAITING_LOCKIN channel, CLN transitions to AWAITING_UNILATERAL and tries to broadcast a commitment tx that spends the (non-existent) funding output. That commit tx can never confirm either, so the channel record now sits stuck in AWAITING_UNILATERAL indefinitely. Stops l2 before close to force unilateral and avoid mutual close racing in. Marked xfail-strict so the bug is documented without breaking CI. Changelog-None
|
Adds a second xfail-strict reproducer for the same root cause: If the operator (or an automation like CLBOSS's spenderp) issues Same setup as the first test (mock_rpc on sendrawtransaction + Kept as a separate commit so it can be split off if maintainers prefer |
When a node is the funder of a channel whose funding tx never confirms (broadcast rejected at ATMP, evicted from mempool, or simply never broadcast), the channel record stays in CHANNELD_AWAITING_LOCKIN indefinitely. CLN already implements the BOLT 2 fundee-side forget rule (PR #1468, --max-funding-unconfirmed-blocks, default 2016) but has no equivalent on the funder side.
The test asserts the desired post-fix behavior (state has moved beyond CHANNELD_AWAITING_LOCKIN) and is marked @pytest.mark.xfail(strict=True) so:
Reproduces #9112