Ensure that Task SDK supervisor closes all its subprocess handles correctly. #44263
+62
−24
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.
If we keep any copies of the handles open then the selector loop in monitor
process will get stuck waiting on a read loop on a socket that never closes
(because its open in the same process still!).
Sadly I wasn't able to reproduce this behaviour in unit tests, but only when
running this code for real. (The main fix here is to pass
child_stderr
to_close_unused_sockets too, the rest are drive-by tidy ups)
Since we never access
proc.stdout
or stderr on the class (they are closedover in the callbacks only) I removed those properties as they aren't needed
and shouldn't be accessed directly as it would lead to garbled output.
Also add tests (and re-fix) the last-chance exception handling
^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rst
or{issue_number}.significant.rst
, in newsfragments.