Skip to content

Commit dbda41e

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 28df626 commit dbda41e

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
@@ -3658,6 +3658,13 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
36583658

36593659
self.remove_stale_resolved_payments();
36603660

3661+
// Technically we don't need to do this here, but if we have holding cell entries in a
3662+
// channel that need freeing, it's better to do that here and block a background task
3663+
// rather than blocking the message queueing pipeline.
3664+
if self.check_free_holding_cells() {
3665+
should_persist = NotifyOption::DoPersist;
3666+
}
3667+
36613668
should_persist
36623669
});
36633670
}

0 commit comments

Comments
 (0)