Skip to content
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

pay: Remove presplitter #6400

Merged
merged 3 commits into from
Jul 20, 2023

Conversation

cdecker
Copy link
Member

@cdecker cdecker commented Jul 14, 2023

The presplitter modifier would split a payment before trying the first
attempt based on some common sizes. Its goal was to have smaller parts
in flight over different paths, in order to make it more difficult for
a forwarding node to learn payment amount. However it was causing some
issues for direct payments, and estimates on spendable amounts which
considers only the first HTLC being added, but presplitter would
always cause multiple HTLCs to be kicked off, causing the estimate to
be off.

Removing the presplitter fixes this, making draining channels easier,
and worse success rates, due to more HTLCs in flight directly
impacting the changes of getting stuck.

@cdecker cdecker added this to the v23.08 milestone Jul 14, 2023
@rustyrussell
Copy link
Contributor

rustyrussell commented Jul 15, 2023

Hit a known flake which I've got a fix for in another PR.

Could use a Changelog-Changed: line though?

Ack 05060fa

@cdecker
Copy link
Member Author

cdecker commented Jul 19, 2023

There is a Changelog-Removed line in the second commit, or do you prefer to classify this as a change and not a removal?

@cdecker cdecker marked this pull request as ready for review July 19, 2023 16:54
These tests make assumptions about the presplitter behavior which
we'll remove in the next commit. We remove them here so we don't cause
temporary breaks in the git history.
The presplitter modifier would split a payment before trying the first
attempt based on some common sizes. Its goal was to have smaller parts
in flight over different paths, in order to make it more difficult for
a forwarding node to learn payment amount. However it was causing some
issues for direct payments, and estimates on spendable amounts which
considers only the first HTLC being added, but presplitter would
always cause multiple HTLCs to be kicked off, causing the estimate to
be off.

Removing the presplitter fixes this, making draining channels easier,
and worse success rates, due to more HTLCs in flight directly
impacting the changes of getting stuck.

Changelog-Removed: pay: `pay` no longer splits based on common size, as it was causing issues in various scenarios.
@cdecker
Copy link
Member Author

cdecker commented Jul 19, 2023

Rebased on top of master and now shepherding it through CI 👍

Copy link
Collaborator

@vincenzopalazzo vincenzopalazzo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 312d57c

I like this simplification. It was the root cause of some problems, when this is merged, I will walk through the issues and see if we solve them!

@rustyrussell rustyrussell merged commit 22462e1 into ElementsProject:master Jul 20, 2023
38 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants