diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2011-11-09 23:37:09 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2011-11-09 23:37:09 (GMT) |
commit | a3651136790d3ec8291a07b1a5af8f0353e59c20 (patch) | |
tree | d6d6421d712acb3375b8847046e13c1855262a9c | |
parent | 69d44fdb90fda47a1d6a46e3a49f67487b84c3ac (diff) | |
download | cpython-a3651136790d3ec8291a07b1a5af8f0353e59c20.zip cpython-a3651136790d3ec8291a07b1a5af8f0353e59c20.tar.gz cpython-a3651136790d3ec8291a07b1a5af8f0353e59c20.tar.bz2 |
Issue #13373: multiprocessing.Queue.get() could sometimes block indefinitely
when called with a timeout. Patch by Arnaud Ysmal.
-rw-r--r-- | Lib/multiprocessing/queues.py | 6 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/Lib/multiprocessing/queues.py b/Lib/multiprocessing/queues.py index 3280a25..51d9912 100644 --- a/Lib/multiprocessing/queues.py +++ b/Lib/multiprocessing/queues.py @@ -126,7 +126,11 @@ class Queue(object): if not self._rlock.acquire(block, timeout): raise Empty try: - if not self._poll(block and (deadline-time.time()) or 0.0): + if block: + timeout = deadline - time.time() + if timeout < 0 or not self._poll(timeout): + raise Empty + elif not self._poll(): raise Empty res = self._recv() self._sem.release() @@ -1001,6 +1001,7 @@ Bob Yodlowski Danny Yoo George Yoshida Masazumi Yoshikawa +Arnaud Ysmal Bernard Yue Moshe Zadka Milan Zamazal @@ -73,6 +73,9 @@ Core and Builtins Library ------- +- Issue #13373: multiprocessing.Queue.get() could sometimes block indefinitely + when called with a timeout. Patch by Arnaud Ysmal. + - Issue #13254: Fix Maildir initialization so that maildir contents are read correctly. |