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
Splice: Complete tx_abort implementation #6940
Conversation
e3cd1c9
to
b21da4e
Compare
0ce23d6
to
ce5dce1
Compare
ce5dce1
to
096925f
Compare
@ddustin should we try this out (integration tests) w/ our splicing branch? Our branch is not quite released yet, but is close ... |
It's not quite ready for testing yet |
@devrandom review beg |
Hi @ddustin, just going through all the open PRs that may make it into v24.02, and this one looks good for inclusion as far as I can see. Can you share your view on the current status, and whether we can include it or not? If included, we may do 1-2 rounds of final reviews and merge it, otherwise I'll untag it for the milestone, until it is ready for inclusion ^^ |
Hi @cdecker, it would be great to get this included in the next release! I believe it is definitely ready for inclusion. This should all only apply under the experimental-splicing flag making it a safer change. In some manual tests aggressively restarting channeld (which tx_abort does) reveals some passed file descriptor issues. I believe this is revealing an existing issue and not related to this PR. If correct this should enable us to add flaky fd passing to the CI. To build the test however I need PR #6980 merged too as the test is dependent on both. |
Ok, got it. I quite like #6980, but the discussion doesn't look finished yet. Am I good to take on this PR and shepherd it through CI, even if #6980 may not make it through in this release? The next release would be 24.05, so not a huge delay, but I prefer pulling in as much as possible to keep a clean worktable. |
Yeah that works 👍, thanks! |
d9750ea
to
aec68fa
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trivial changes mainly.
But last commit should be the first: that means tests always pass!
aec68fa
to
977d4b3
Compare
I tried rebasing this PR, but managed to somehow break it. It now has an undefined symbol |
977d4b3
to
966aa4a
Compare
In he case of initiating an RBF, ABORT is used instead of ERROR.
We add checks for tx_abort and pass them back up to be handled.
Lightningd is responsible to restart channeld when it gets this message.
Add checking for and sending tx_abort to channeld. When receiving it we first ACK it back, send a request to restart to lightningd, and then shutdown channeld. We also must update the splice tests that relied on reconnect checks for splice warnings (as some are now tx_aborts instead).
If the peer isn’t required to send signatures first but does while we are awaiting the next user RPC action — we should be caching the message and using it later. Before we would leave the message cached in the socket itself, but tx_abort semantics require us to check the socket more often.
4aa26ef
to
f75ec9a
Compare
f75ec9a
to
d97e3aa
Compare
Ah looks like commit db6f0da removed that routine. Should be a simple update to use the new method. |
Thanks for the review! I addressed these changes, rebased master, and updated it to work with the latest master. @cdecker once it passes CI it should be good to go |
Adds support for
tx_abort
including sending, receiving, and ACK'ing.When
tx_abort
is confirmed inchanneld
we notifylightningd
and shutdown.lightningd
then restarts the channeld daemon.This is all done without breaking the connection and special care is made to connect the daemon to the existing connection through a
connectd
fd.