Skip to content

Commit

Permalink
[3.12] pythongh-114440: Close writer pipe in multiprocessing.Queue, n…
Browse files Browse the repository at this point in the history
…ot concurrent.futures (pythonGH-114489)

This was left out of the 3.12 backport for three related issues:
- pythongh-107219 (which adds `self.call_queue._writer.close()` to `_ExecutorManagerThread` in `concurrent.futures`)
- pythongh-109370 (which changes this to be only called on Windows)
- pythongh-109047 (which moves the call to `multiprocessing.Queue`'s `_terminate_broken`)

Without this change, ProcessPoolExecutor sometimes hangs on Windows
when a worker process is terminated.

Co-authored-by: Victor Stinner <[email protected]>
Co-authored-by: Serhiy Storchaka <[email protected]>
  • Loading branch information
3 people authored and naveen521kk committed Sep 4, 2024
1 parent cf3fcc0 commit 1ca1659
Showing 1 changed file with 6 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
On Windows, closing the connection writer when cleaning up a broken
:class:`multiprocessing.Queue` queue is now done for all queues, rather than
only in :mod:`concurrent.futures` manager thread.
This can prevent a deadlock when a ``multiprocessing`` worker process terminates
without cleaning up.
This completes the backport of patches by Victor Stinner and Serhiy Storchaka.

0 comments on commit 1ca1659

Please sign in to comment.