From 2900da611279f048a2d6a38fdfa4dabef1138585 Mon Sep 17 00:00:00 2001 From: niftynei Date: Tue, 16 Jun 2020 18:25:32 -0500 Subject: [PATCH] migrations: ignore channels that don't have a peer_id We erase peer data after the last channel close transaction for that peer is 100 blocks deep. We were failing to finish the migration because the peer_id lookup on these was failing. Now we ignore any channel with a null peer_id. Fixes #3768 --- tests/data/last_tx_closed.sqlite3.xz | Bin 0 -> 19688 bytes tests/test_db.py | 14 ++++++++++++++ wallet/db.c | 5 +++++ 3 files changed, 19 insertions(+) create mode 100644 tests/data/last_tx_closed.sqlite3.xz diff --git a/tests/data/last_tx_closed.sqlite3.xz b/tests/data/last_tx_closed.sqlite3.xz new file mode 100644 index 0000000000000000000000000000000000000000..16a0a1890231691f4011d1409417fd63c17505ca GIT binary patch literal 19688 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