From 683184f65eb71bdfd12550e7293f0c721100dd9b Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 21 Sep 2026 10:32:36 -0700 Subject: Ark: an issued-but-unpaid invoice on a preimage index is skipped too. The ASP answers a settled hash with "already been paid" and a merely issued one with "UNIQUE constraint failed: invoices.payment_hash"; both mean the index is taken. Headroom raised to 200 skips. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01Tmfg8k5f3TbNJS34qiqHAp --- src/ark/manager.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/ark') diff --git a/src/ark/manager.js b/src/ark/manager.js index 3477638..18c69b7 100644 --- a/src/ark/manager.js +++ b/src/ark/manager.js @@ -1355,8 +1355,11 @@ export class ArkManager { }); break; } catch (e) { - const used = /already been paid|already exists|already in use|duplicate/i.test(e?.message || ''); - if (!used || tries >= 50) throw e; + // "already been paid" for a settled one; "UNIQUE constraint failed: + // invoices.payment_hash" for one merely issued before — both mean + // this index is spoken for + const used = /already been paid|already exists|already in use|duplicate|UNIQUE constraint|payment_hash/i.test(e?.message || ''); + if (!used || tries >= 200) throw e; this._save(); // remember the skipped index even if the next try fails } } -- cgit v1.2.3