Commit 4215d273 authored by Richard Oudkerk's avatar Richard Oudkerk

Issue #15101: Make pool finalizer avoid joining current thread

parent 48ee6908
......@@ -489,7 +489,8 @@ class Pool(object):
# We must wait for the worker handler to exit before terminating
# workers because we don't want workers to be restarted behind our back.
debug('joining worker handler')
worker_handler.join()
if threading.current_thread() is not worker_handler:
worker_handler.join(1e100)
# Terminate workers which haven't already finished.
if pool and hasattr(pool[0], 'terminate'):
......@@ -499,10 +500,12 @@ class Pool(object):
p.terminate()
debug('joining task handler')
task_handler.join(1e100)
if threading.current_thread() is not task_handler:
task_handler.join(1e100)
debug('joining result handler')
result_handler.join(1e100)
if threading.current_thread() is not result_handler:
result_handler.join(1e100)
if pool and hasattr(pool[0], 'terminate'):
debug('joining pool workers')
......
......@@ -67,6 +67,8 @@ Core and Builtins
Library
-------
- Issue #15101: Make pool finalizer avoid joining current thread.
- Issue #15054: A bug in tokenize.tokenize that caused string literals
with 'b' and 'br' prefixes to be incorrectly tokenized has been fixed.
Patch by Serhiy Storchaka.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment