-
Notifications
You must be signed in to change notification settings - Fork 904
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libplugin-pay: use map for channel hints (on top of #7494) #7648
libplugin-pay: use map for channel hints (on top of #7494) #7648
Commits on Sep 6, 2024
-
pay: Add a function to update
channel_hint
s based on their ageWe relax constraints from the `channel_hint` through a linear refill.
Configuration menu - View commit details
-
Copy full SHA for 5349f00 - Browse repository at this point
Copy the full SHA 5349f00View commit details -
route: Add the total capacity to route_hops
We need to know the overall channel capacity, i.e., the amount_msat that the channel was funded with, in order to relax the channel_hint to refill over time.
Configuration menu - View commit details
-
Copy full SHA for 6975f56 - Browse repository at this point
Copy the full SHA 6975f56View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6f65862 - Browse repository at this point
Copy the full SHA 6f65862View commit details -
pay: Make the
channel_hint
s globalWe attach the hints to the plugin, so they get shared across multiple payments.
Configuration menu - View commit details
-
Copy full SHA for 5ee2b96 - Browse repository at this point
Copy the full SHA 5ee2b96View commit details -
Configuration menu - View commit details
-
Copy full SHA for 17aaf90 - Browse repository at this point
Copy the full SHA 17aaf90View commit details -
plugin: Split out the
struct channel_hint
handlingWe're getting serious about how we manage the channel_hints, so let's give them a proper home.
Configuration menu - View commit details
-
Copy full SHA for b265c13 - Browse repository at this point
Copy the full SHA b265c13View commit details -
pay: Rename overall_capacity to just capacity
Suggested-by: Rusty Russell <@rustyrussell>
Configuration menu - View commit details
-
Copy full SHA for 25d55a3 - Browse repository at this point
Copy the full SHA 25d55a3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9b1610f - Browse repository at this point
Copy the full SHA 9b1610fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9a2827e - Browse repository at this point
Copy the full SHA 9a2827eView commit details -
route: Use safe
amount_sat_to_msat
conversionSuggested-by: Rusty Russell <@rustyrussell>
Configuration menu - View commit details
-
Copy full SHA for 124e215 - Browse repository at this point
Copy the full SHA 124e215View commit details -
route: Change the type of the funding capacity to
amount_sat
Keeping it in `amount_msat` made the comparisons easier, but it was the wrong type for this.
Configuration menu - View commit details
-
Copy full SHA for f4911a9 - Browse repository at this point
Copy the full SHA f4911a9View commit details -
Configuration menu - View commit details
-
Copy full SHA for dbe9685 - Browse repository at this point
Copy the full SHA dbe9685View commit details -
Configuration menu - View commit details
-
Copy full SHA for 248113b - Browse repository at this point
Copy the full SHA 248113bView commit details -
pay: Add a hysteresis for channel_hint relaxation
If we have a large channel, fail to send through a small amount, and then add a `channel_hint`, then it can happen that the call to `channel_hint_set_update` is already late enough that it refills the 1msat we removed from the attempted amount, thus making the edge we just excluded eligible again, which can lead into an infinite loop. We slow down the updating of the channel_hints to once every hysteresis timeout. This allows us to set tight constraints, while not incurring in the accidental relaxation issue.
Configuration menu - View commit details
-
Copy full SHA for b102c04 - Browse repository at this point
Copy the full SHA b102c04View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2902283 - Browse repository at this point
Copy the full SHA 2902283View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8db5e8d - Browse repository at this point
Copy the full SHA 8db5e8dView commit details -
pay: Inject
channel_hint
s we receive via plugin notificationsMaking sure that we don't accidentally create an endless loop.
Configuration menu - View commit details
-
Copy full SHA for 95b459f - Browse repository at this point
Copy the full SHA 95b459fView commit details -
pay: Remove use of temporary local
channel_hint
We were using `channel_hint` to temporarily tweak the graph inside of a payment. However, these ad-hoc `channel_hints` are stickier than their predecessors, in that they outlive the payment attempt itself, and interfere with later ones. Changelog-Changed: pay: Discarding an overly long or expensive route does not blocklist channels anymore.
Configuration menu - View commit details
-
Copy full SHA for 3b173e2 - Browse repository at this point
Copy the full SHA 3b173e2View commit details -
pytest: Remove the
test_mutual_reconnect_race
testI'm not sure how this ever worked, and it must've been racy: we initiate a number of payments, then proceed to disconnect and reconnect repeatedly. If a payment is attempted inbetween the `disconnect` and `connect` the payment will fail. Removing it since it most likely was just a sledgehammer test that we didn't know how to fine-tune. Changelog-None
Configuration menu - View commit details
-
Copy full SHA for 485725f - Browse repository at this point
Copy the full SHA 485725fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9b876f5 - Browse repository at this point
Copy the full SHA 9b876f5View commit details -
pytest: Fix up the
test_sendpay_grouping
testIt was failing because the channel_hint from one attempt would prevent us from retrying. By changing the amounts so that the channel_hints do not concern them (value smaller than estimate) we can make things work as before again.
Configuration menu - View commit details
-
Copy full SHA for 772a505 - Browse repository at this point
Copy the full SHA 772a505View commit details -
pay: Simplify the
channel_hint
update logicWe were ignoring more reliable information because of the stricter-is-better logic. This meant that we were also ignoring local channel information, despite knowing better. By simplifying the logic to pick the one with the newer timestamp we ensure that later observations always trump earlier ones. There is a bit of interplay between the relaxation of the constraints updating the timestamp, and comparing to real observation timestamps, but that should not impact us for local channels.
Configuration menu - View commit details
-
Copy full SHA for 1e833ba - Browse repository at this point
Copy the full SHA 1e833baView commit details
Commits on Sep 9, 2024
-
libplugin-pay: use map for channel hints
This commit fixes a "FIXME: This is slow" in the pay plugin. For nodes with many channels this is a tremendous improvement in pay performance. PR ElementsProject#7611 improves payment performance from 15 seconds to 13.5 seconds on one of our nodes. This commit improves payment performance from 13.5 seconds to 5.7 seconds. Changelog-Fixed: Improved pathfinding speed for large nodes.
Configuration menu - View commit details
-
Copy full SHA for aaff2f3 - Browse repository at this point
Copy the full SHA aaff2f3View commit details