xpay treats a local "Too many HTLCs" failure as a 1 msat capacity shortfall and floods the route with dust parts.
Maintainer thường phản hồi trong vòng 2 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 65/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- c
- Lĩnh vực
- backend, networking, payments
Hướng nghiên cứu
Start by tracing the local failure path in plugins/xpay/xpay.c at the handling and askrene-inform-channel calls, then compare it with channeld/channeld.c and channeld/full_channel.c. Check how plugins/askrene/askrene.c records constrained amounts. Done means a local "Too many HTLCs" failure no longer causes repeated amount-minus-1-msat retries and dust-part creation; verify the behavior with the relevant existing test or reproduction.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
When our own outgoing channel has no free HTLC slots, channeld fails the HTLC with temporary_channel_failure ("Too many HTLCs"). xpay handles that like a liquidity failure and tells askrene the channel is constrained to the attempted amount. askrene stores that as "amount minus 1 msat". The same channel stays the cheapest route, so the next getroutes sends the big part over it again, 1 msat smaller, and routes the 1 msat leftover elsewhere. Each retry fails again on the full slots, so xpay produces one new 1–17 msat part per failure. A slot shortage doesn't depend on the amount, so this loop can never succeed.
Observed (mainnet, v26.06.8)
Payment of 298,495 sat, retry_for 60 s:
- From the first "Too many HTLCs" on our own channel (
erring_index0), xpay ran this cycle 98 times in 14
s, about once every 60 ms. - The dust parts summed to 237 msat. They went over other channels, reached the destination, and were held
there for about 2 minutes untilmpp_timeout. - The main part (~295.5k sat) never left our node, so the payment failed.
xpay log (ids shortened):
260: routes for 295521663msat = [1msat via 4 hops, 295521662msat via 2 hops]
260: ...: We got failed: WIRE_TEMPORARY_CHANNEL_FAILURE (WIRE_TEMPORARY_CHANNEL_FAILURE: Too many HTLCs)
for <local scidd>, assuming it can't carry 295521662msat
260: routes for 295521662msat = [1msat via 4 hops, 295521661msat via 2 hops]
260: ...: We got failed: WIRE_TEMPORARY_CHANNEL_FAILURE (... Too many HTLCs) for <local scidd>, assuming
it can't carry 295521661msat
... (98 iterations)
260: getroutes_done: need more (was_routing 295521655msat, needs_routing 295521656msat)
According to my LLM:
Where it happens
channeldreports a full slot count as a generictemporary_channel_failure:
channeld/channeld.c#L6602-L6605. The count check, including our own limit applied to
locally added HTLCs: channeld/full_channel.c#L728-L740- For a local failure (
index == 0), xpay has the precise reason ("Too many HTLCs") in the error message:
plugins/xpay/xpay.c#L1008-L1013 - It still maps every
temporary_channel_failureto "can't carry this amount":
plugins/xpay/xpay.c#L1125-L1131
and sendsaskrene-inform-channelwithinform: constrainedand the attempted amount:
plugins/xpay/xpay.c#L1181-L1193 - askrene turns that into a maximum of amount − 1 msat ("we were one msat short"):
plugins/askrene/askrene.c#L1199-L1211
- Ngôn ngữ chính
- C
- Star
- 3.1k
- Fork
- 1k
- Merge trung bình
- 3 ngày 10 giờ
- Pull request đã merge (30 ngày)
- 40
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ElementsProject/lightning
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
ElementsProject/lightning#9593 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
ElementsProject/lightning#9322 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
ElementsProject/lightning#9206 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
ElementsProject/lightning#9187 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 2 ngày
-
QA
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
ElementsProject/lightning#9117 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của ElementsProject/lightning
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
openwrt/firmware-utils#82 ·
-
area:http-gateway good first issue priority:low type:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
crazy-goat/php-fpm-ng#870 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Discover carries headerEdges that nothing reads since #1914 moved E0507/E0517 to the compiler graphĐang mởtech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
2个显示的问题Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
coolsnowwolf/lede#14209 ·
-
Cannot run pico-hsm-tool.pyĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
polhenarejos/pico-hsm#147 ·