Allow async events processing without holding total_consistency_lock#2199
Merged
TheBlueMatt merged 4 commits intolightningdevkit:mainfrom Apr 22, 2023
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #2003.
Unfortunately, the RAII types used by
RwLockare notSend, which is why they can't be held overawaitboundaries. In order to allow asynchronous events processing in multi-threaded environments, we here allow to process events without holding thetotal_consistency_lock. We do so by cloning the events and only draining and persisting the queue after they have successfully been processed.The first commit reverts a prior commit of #2177, as we now want the behavior of the two
process_eventmethods to diverge, i.e., want to avoid cloning in the sync case.I tried to be minimally invasive as the event processing will receive a general overhaul with #2167 and follow-ups and any more substantial changes would likely only make sense after they have landed.