-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix bug where AsyncioRunnable
hangs if process_one
throws and the source is not emitting new values
#523
base: branch-25.02
Are you sure you want to change the base?
Fix bug where AsyncioRunnable
hangs if process_one
throws and the source is not emitting new values
#523
Conversation
… been raised in process_one, but AsyncioRunnable is blocked on read_async in the situation where the source isn't emitting any values TODO: Remove debug logging TODO: Remove static_pointer_cast
AsyncioRunnable
hangs if process_one
throws and the source is not emitting new values
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## branch-25.02 #523 +/- ##
=================================================
+ Coverage 54.34% 74.00% +19.65%
=================================================
Files 372 407 +35
Lines 12553 15101 +2548
Branches 1104 1198 +94
=================================================
+ Hits 6822 11175 +4353
+ Misses 5731 3926 -1805
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 168 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
|
Description
AsyncioRunnable
will now callon_state_update(state_t::Kill)
when an exception is caughtawait_read
withawait_read_until
allowingAsyncioRunnable
to checkstop_source.stop_requested()
await_read_until
method inIEdgeReadable
, unfortunately this interface has numerous subclasses which all then needed newawait_read_until
methods, even thoughEdgeChannelReader
is the only class that really needed it. Alternatives:AsyncSink
perform a static cast ofthis->get_readable_edge()
toEdgeChannelReader
await_read_until
method inIEdgeReadable
but give it an implementation that throws a non-impl exception (or asserts false)Checklist