"No path found" error gets stuck after the offline destination comes online
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.6k
- Forks
- 3.5k
- Avg merge
- 2d 8h
- Merged PRs (30d)
- 61
Description
This is about Lightning payments with gossip enabled and no trampoline routing. Testing the following case on 4.1.2:
- On testnet, run two instances of Electrum with different wallets, let's call them Alice and Bob for conformity.
- They both open channels to some random nodes and have incoming liquidity, payments between them work fine.
- Alice wants to pay Bob
- Bob creates an invoice and sends it to Alice
- For whatever reason Bob goes offline (we close the wallet B)
- Alice pays the invoice but the process fails with "No path found", which is fully expected and fine.
- Bob goes back online (we open the wallet B again) and notifies Alice.
- Alice clicks
Retryon the payment. - However, Electrum clearly doesn't even try to find a path instantly returning the "No path found" error. At the same time, status of the payment changes from
FailedtoExpires in about 24 hourswhich is also confusing. TheLogmenu item also disappears. - Alice restarts her Electrum (here you need to fully restart Electrum, not just close one of the wallets), waits until gossip is fully synchronized (important!) and chooses
Pay...in the failed payment's context menu. - The payment should complete fine.
This error seems to be pretty sticky. If you only reopen the wallet without exiting Electrum (in case you run both Bob and Alice on the same machine) it doesn't go away and instantly says "Path not found". If you don't wait until gossip is downloaded and try to pay you'll get the same error, and it won't go away even after gossip is synchronized. So Electrum needs to be restarted fully again.
It seems that when using trampoline all of this above doesn't apply. As soon as the other node goes online it can be paid with a simple retry.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the testnet Lightning scenario with gossip enabled and no trampoline routing, focusing on Alice's Retry action after Bob comes back online. Trace the payment retry and gossip synchronization flow from the failed payment's context menu; done means retry succeeds without a full Electrum restart and the payment status and Log menu remain consistent.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- networking, payments
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100