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.
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
});
}