udp errors should result in protocol.error_received, inconsistent with vanilla asyncio #601
+5
−6
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.
I observed a condition in production where a temporary network outage caused a UDP sendto to fail. In stock asyncio this would result in a call to error_received on the protocol object, but in uvloop this results in a fatal error that closes the transport. This is a rather nasty thing to happen since with vanilla asyncio when the transient network condition was resolved the transport could again be used, but with uvloop you would have to close the transport and repoen it.. See cpython source here:
https://github.com/python/cpython/blob/main/Lib/asyncio/selector_events.py#L1240
Sorry I don't have a script/fragment to reproduce the error, to do this you'd have to manipulate the networking stack such that the interface was not available after the transport was created. It's possible of course but I don't know of an easy way to do this.