Skip to content

Commit bcf3b56

Browse files
committed
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.
1 parent ad44de6 commit bcf3b56

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3678,6 +3678,13 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
36783678

36793679
self.remove_stale_resolved_payments();
36803680

3681+
// Technically we don't need to do this here, but if we have holding cell entries in a
3682+
// channel that need freeing, it's better to do that here and block a background task
3683+
// rather than blocking the message queueing pipeline.
3684+
if self.check_free_holding_cells() {
3685+
should_persist = NotifyOption::DoPersist;
3686+
}
3687+
36813688
should_persist
36823689
});
36833690
}

0 commit comments

Comments
 (0)