mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-24 23:08:36 +01:00
Free the holding cells during background timer ticks
We currently free the channel holding cells in `get_and_clear_pending_msg_events`, blocking outbound messages while we do so. This is fine, but may block the message pipeline longer than we need to. In the next commit we'll push timer-originating channel fee updates out through the holding cell pipeline, leaning more on that freeing in the future. Thus, to avoid a regression in message time, here we clear the holding cell after processing all timer events. This also avoids needing to change tests in the next commit.
This commit is contained in:
parent
cae7c8180b
commit
1531378040
1 changed files with 7 additions and 0 deletions
|
@ -3817,6 +3817,13 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
|
|||
|
||||
self.remove_stale_resolved_payments();
|
||||
|
||||
// Technically we don't need to do this here, but if we have holding cell entries in a
|
||||
// channel that need freeing, it's better to do that here and block a background task
|
||||
// than block the message queueing pipeline.
|
||||
if self.check_free_holding_cells() {
|
||||
should_persist = NotifyOption::DoPersist;
|
||||
}
|
||||
|
||||
should_persist
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue