Remove process-id checks from asyncio. Asyncio and fork() does not mix. #2911
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.
Pull Request check-list
$ tox
pass with this change (including linting)?Description of change
Remove
PID
checks fromasyncio
connections, sinceasyncio
andfork()
does not mix. See issue #2910Details:
Python does not support
fork()
on a process with a runningasyncio
event loop. Therefore supporting a connection pool of connection from a different process is not necessary.Similarly, connection pools don't need to deal with different threads either.
We remove the checks for process ids, intended to ignore inherited file descriptors (even though these should probably have been closed on fork anyway).
We remove lenience when returning a connection to a pool, it should always be returned to the pool it originated from. Not doing that would be a resource leak.
We simplify
BlockingConnectionPool
since it does not need to do any multi-threading. It now just adds a simple wait mechanism on top of theConnectionPool
, reducing code and overhead. TheQueueClass
argument is now ignored. It always was a weird implementation leak anyway