Skip to content

Commit b872684

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 df8faa9 commit b872684

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

36583658
self.remove_stale_resolved_payments();
36593659

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

0 commit comments

Comments
 (0)