Skip to content

Conversation

@janniklinde
Copy link
Contributor

This patch introduces various bugfixes and improvements to stream handling to address synchronization issues leading to deadlocks in specific cases (we now reliably guarantee that the finalizer callback is invoked after the last consumer finished execution). Further, the Tee instruction was modified to be introduced by statement level rewrites to keep track of transient reads / writes which led to issues with the previous DAG rewrite.

Finally, we introduced basic block tracking to remove items from the OOCEvictionManager once they have no pending consumers. To achieve that, we track stream references and once no variable holds the underlying CachingStream we mark it as deletable (because then we know, that no additional stream consumer will be added). Blocks from deletable streams can safely be removed from the cache once their consumption count reaches the final number of registered consumers.

Note that we modified the VariableCPInstruction to access variable remove and copy events.

…ues to avoid Race Conditions and Unclosed Streams
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant