From 1cc64dd67c6fd942da67d855902ca04325d5920f Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sat, 17 May 2025 22:36:50 +0930 Subject: [PATCH] pytest: test to crash on migration from old db. ``` Error executing statement: wallet/wallet.c:3247: INSERT INTO channel_htlcs ( id, channel_id, channel_htlc_id, direction, origin_htlc, msatoshi, cltv_expiry, payment_hash, payment_key, hstate, routing_onion, malformed_onion, partid, groupid, fees_msat, min_commit_num) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?);: UNIQUE constraint failed: channel_htlcs.id lightningd: FATAL SIGNAL 6 (version v25.02-321-g3999879) 0x642e42dc974f send_backtrace common/daemon.c:33 0x642e42dc97eb crashdump common/daemon.c:78 0x7d90f2e4532f ??? ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0 0x7d90f2e9eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44 0x7d90f2e9eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78 0x7d90f2e9eb2c __GI___pthread_kill ./nptl/pthread_kill.c:89 0x7d90f2e4527d __GI_raise ../sysdeps/posix/raise.c:26 0x7d90f2e288fe __GI_abort ./stdlib/abort.c:79 0x642e42d71f79 fatal_vfmt lightningd/log.c:1055 0x642e42da61e8 db_error wallet/db.c:1117 0x642e42e1eafc db_fatal db/utils.c:323 0x642e42e1eee6 db_exec_prepared_v2 db/utils.c:197 0x642e42db1fd9 wallet_htlc_save_out wallet/wallet.c:3310 0x642e42d8f07f update_out_htlc lightningd/peer_htlcs.c:1978 0x642e42d8f435 changed_htlc lightningd/peer_htlcs.c:2011 0x642e42d929aa peer_sending_commitsig lightningd/peer_htlcs.c:2108 0x642e42d5002f channel_msg lightningd/channel_control.c:1533 0x642e42d9ec3a sd_msg_read lightningd/subd.c:560 0x642e42e88435 next_plan ccan/ccan/io/io.c:60 0x642e42e88906 do_plan ccan/ccan/io/io.c:422 0x642e42e889c3 io_ready ccan/ccan/io/io.c:439 0x642e42e8a332 io_loop ccan/ccan/io/poll.c:455 0x642e42d69b01 io_loop_with_timers lightningd/io_loop_with_timers.c:22 0x642e42d6f525 main lightningd/lightningd.c:1486 0x7d90f2e2a1c9 __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 0x7d90f2e2a28a __libc_start_main_impl ../csu/libc-start.c:360 0x642e42d41b64 ??? ???:0 0xffffffffffffffff ??? ``` Signed-off-by: Rusty Russell --- .../channel_htlcs-pre-pagination.sqlite3.xz | Bin 0 -> 9548 bytes tests/test_db.py | 124 ++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 tests/data/channel_htlcs-pre-pagination.sqlite3.xz diff --git a/tests/data/channel_htlcs-pre-pagination.sqlite3.xz b/tests/data/channel_htlcs-pre-pagination.sqlite3.xz new file mode 100644 index 0000000000000000000000000000000000000000..a512b34a354d953b2134332a595cc946ff963ce9 GIT binary patch literal 9548 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