mirror of https://github.com/python/cpython
Issue #20319: concurrent.futures.wait() can block forever even if Futures have completed
This commit is contained in:
parent
0ba5f0d386
commit
2b754f49a5
|
@ -225,7 +225,8 @@ def as_completed(fs, timeout=None):
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
for f in fs:
|
for f in fs:
|
||||||
f._waiters.remove(waiter)
|
with f._condition:
|
||||||
|
f._waiters.remove(waiter)
|
||||||
|
|
||||||
DoneAndNotDoneFutures = collections.namedtuple(
|
DoneAndNotDoneFutures = collections.namedtuple(
|
||||||
'DoneAndNotDoneFutures', 'done not_done')
|
'DoneAndNotDoneFutures', 'done not_done')
|
||||||
|
@ -272,7 +273,8 @@ def wait(fs, timeout=None, return_when=ALL_COMPLETED):
|
||||||
|
|
||||||
waiter.event.wait(timeout)
|
waiter.event.wait(timeout)
|
||||||
for f in fs:
|
for f in fs:
|
||||||
f._waiters.remove(waiter)
|
with f._condition:
|
||||||
|
f._waiters.remove(waiter)
|
||||||
|
|
||||||
done.update(waiter.finished_futures)
|
done.update(waiter.finished_futures)
|
||||||
return DoneAndNotDoneFutures(done, set(fs) - done)
|
return DoneAndNotDoneFutures(done, set(fs) - done)
|
||||||
|
|
|
@ -69,6 +69,12 @@ Library
|
||||||
|
|
||||||
- Issue #17481: inspect.getfullargspec() now uses inspect.signature() API.
|
- Issue #17481: inspect.getfullargspec() now uses inspect.signature() API.
|
||||||
|
|
||||||
|
- Issue #15304: concurrent.futures.wait() can block forever even if
|
||||||
|
Futures have completed. Patch by Glenn Langford.
|
||||||
|
|
||||||
|
Fix warning message when `os.chdir()` fails inside
|
||||||
|
`test.support.temp_cwd()`. Patch by Chris Jerdonek.
|
||||||
|
|
||||||
IDLE
|
IDLE
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue