Commit ce14c099 authored by Jesse Noller's avatar Jesse Noller

Merge fix for 4660 back to 26 maint

parent 01c90a2c
...@@ -1141,11 +1141,6 @@ their parent process exits. The manager classes are defined in the ...@@ -1141,11 +1141,6 @@ their parent process exits. The manager classes are defined in the
Run the server in the current process. Run the server in the current process.
.. method:: from_address(address, authkey)
A class method which creates a manager object referring to a pre-existing
server process which is using the given address and authentication key.
.. method:: get_server() .. method:: get_server()
Returns a :class:`Server` object which represents the actual server under Returns a :class:`Server` object which represents the actual server under
......
...@@ -282,9 +282,22 @@ class JoinableQueue(Queue): ...@@ -282,9 +282,22 @@ class JoinableQueue(Queue):
Queue.__setstate__(self, state[:-2]) Queue.__setstate__(self, state[:-2])
self._cond, self._unfinished_tasks = state[-2:] self._cond, self._unfinished_tasks = state[-2:]
def put(self, item, block=True, timeout=None): def put(self, obj, block=True, timeout=None):
Queue.put(self, item, block, timeout) assert not self._closed
self._unfinished_tasks.release() if not self._sem.acquire(block, timeout):
raise Full
self._notempty.acquire()
self._cond.acquire()
try:
if self._thread is None:
self._start_thread()
self._buffer.append(obj)
self._unfinished_tasks.release()
self._notempty.notify()
finally:
self._cond.release()
self._notempty.release()
def task_done(self): def task_done(self):
self._cond.acquire() self._cond.acquire()
......
...@@ -468,6 +468,7 @@ Craig McPheeters ...@@ -468,6 +468,7 @@ Craig McPheeters
Lambert Meertens Lambert Meertens
Bill van Melle Bill van Melle
Lucas Prado Melo Lucas Prado Melo
Brian Merrell
Luke Mewburn Luke Mewburn
Mike Meyer Mike Meyer
Steven Miale Steven Miale
......
...@@ -283,6 +283,9 @@ Core and Builtins ...@@ -283,6 +283,9 @@ Core and Builtins
Library Library
------- -------
- Issue #4660: If a multiprocessing.JoinableQueue.put() was preempted, it was
possible to get a spurious 'task_done() called too many times' error.
- Issue #6595: The Decimal constructor now allows arbitrary Unicode - Issue #6595: The Decimal constructor now allows arbitrary Unicode
decimal digits in input, as recommended by the standard. Previously decimal digits in input, as recommended by the standard. Previously
it was restricted to accepting [0-9]. it was restricted to accepting [0-9].
......
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