-
Notifications
You must be signed in to change notification settings - Fork 895
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
Adding askrene-disable-channel #7693
base: master
Are you sure you want to change the base?
Conversation
To be able to write a route_exclusion to a json stream. Changelog-None. Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
Disabled nodes and channels are now saved into a tal_arr of type strut route_exclution. Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
6907ed1
to
a0f874e
Compare
a0f874e
to
71c3754
Compare
Changelog-EXPERIMENTAL: askrene: add askrene-disable-channel RPC Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
Use a bitmap to mark disabled channels instead of tweaking values in localmods. Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
71c3754
to
f9bc499
Compare
Definitely need this interface, I agree. But I prefer to fix the gossmap_update_localchan semantics, otherwise there is a potential hole if we apply a modification and then the channel in the underlying gossip_store is removed: we would have the same crash. Also, we should not combine nodes and channels in the report output: harsh experience has lead us to now avoid things which don't have simply types (grpc interface has strong types, making this awkward). |
I can think of a way to effectively disable a channel in
askrene
: by callingaskrene-inform-channel
and set themaximum_msat
to 0. But it seems like a workaround way. I think since we already have anaskrene-disable-node
command, we should alsosupport an
askrene-disable-channel
command as well.I have also refactored the way channels are marked as disabled.
Previously we had disabled channels by using
gossmap_local_updatechan
call which would produce a plugin crashwhen calling
getroutes
if we disable a channel that either doesn't exist or it is defined in a layer that we don't usein that call. Now instead we build a bitmap of disabled channels that we pass on to the MCF solver. The bitmap uses the indexes of the channels relative to the final gossmap, ie. the public gossip plus all localmods coming from the layers.