forked from goodboy/tractor
678 B
678 B
Fix a previously undetected trio
-asyncio
task lifetime linking issue with the to_asyncio.open_channel_from()
api where both sides where not properly waiting/signalling termination and it was possible for asyncio
-side errors to not propagate due to a race condition.
The implementation fix summary is: - add state to signal the end of the trio
side task to be read by the asyncio
side and always cancel any ongoing task in such cases. - always wait on the asyncio
task termination from the trio
side on error before maybe raising said error. - always close the trio
mem chan on exit to ensure the other side can detect it and follow.