summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Noller <jnoller@gmail.com>2009-03-30 16:37:36 (GMT)
committerJesse Noller <jnoller@gmail.com>2009-03-30 16:37:36 (GMT)
commitc5d28a0b034401ba9eb40aa5b8813845b3b4bb7a (patch)
treef0314ae44e5bb750236aa81d6e0c6313098c0efe
parent6ae7a7d13d2f1497b197f7d1c798536e3abd8b7a (diff)
downloadcpython-c5d28a0b034401ba9eb40aa5b8813845b3b4bb7a.zip
cpython-c5d28a0b034401ba9eb40aa5b8813845b3b4bb7a.tar.gz
cpython-c5d28a0b034401ba9eb40aa5b8813845b3b4bb7a.tar.bz2
Merge 70717 to 30maint
-rw-r--r--Lib/multiprocessing/connection.py1
-rw-r--r--Lib/test/test_multiprocessing.py24
-rw-r--r--Misc/NEWS30
3 files changed, 55 insertions, 0 deletions
diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py
index 1c4d48e..5e94fed 100644
--- a/Lib/multiprocessing/connection.py
+++ b/Lib/multiprocessing/connection.py
@@ -214,6 +214,7 @@ class SocketListener(object):
'''
def __init__(self, address, family, backlog=1):
self._socket = socket.socket(getattr(socket, family))
+ self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self._socket.bind(address)
self._socket.listen(backlog)
self._address = self._socket.getsockname()
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index 0f91c97..33f3bf3 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -1190,6 +1190,30 @@ class _TestRemoteManager(BaseTestCase):
del queue
manager.shutdown()
+class _TestManagerRestart(BaseTestCase):
+
+ def _putter(self, address, authkey):
+ manager = QueueManager(
+ address=address, authkey=authkey, serializer=SERIALIZER)
+ manager.connect()
+ queue = manager.get_queue()
+ queue.put('hello world')
+
+ def test_rapid_restart(self):
+ authkey = os.urandom(32)
+ manager = QueueManager(
+ address=('localhost', 9999), authkey=authkey, serializer=SERIALIZER)
+ manager.start()
+
+ p = self.Process(target=self._putter, args=(manager.address, authkey))
+ p.start()
+ queue = manager.get_queue()
+ self.assertEqual(queue.get(), 'hello world')
+ manager.shutdown()
+ manager = QueueManager(
+ address=('localhost', 9999), authkey=authkey, serializer=SERIALIZER)
+ manager.start()
+
#
#
#
diff --git a/Misc/NEWS b/Misc/NEWS
index 96d5eae..82c44aa 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -255,6 +255,36 @@ Core and Builtins
Library
-------
+- Issue #5177: Multiprocessing's SocketListener class now uses
+ socket.SO_REUSEADDR on all connections so that the user no longer needs
+ to wait 120 seconds for the socket to expire.
+
+- Adjusted _tkinter to compile without warnings when WITH_THREAD is not
+ defined (part of issue #5035).
+
+- Issue #5561: Removed the sys.version_info shortcuts from platform's
+ python_version() and python_version_tuple() since they produced different
+ output compared to previous Python versions.
+
+- Issue #1034053: unittest now supports skipping tests and expected failures.
+
+- Issue #5068: Fixed the tarfile._BZ2Proxy.read() method that would loop
+ forever on incomplete input. That caused tarfile.open() to hang when used
+ with mode 'r' or 'r:bz2' and a fileobj argument that contained no data or
+ partial bzip2 compressed data.
+
+- Issue #5536: urllib.urlretrieve makes sure to close the file it's writing to
+ even if an exception occurs.
+
+- Issue #5381: Added object_pairs_hook to the json module. This allows
+ OrderedDicts to be built by the decoder.
+
+- Issue #2110: Add support for thousands separator and 'n' type
+ specifier to Decimal.__format__
+
+- Fix Decimal.__format__ bug that swapped the meanings of the '<' and
+ '>' alignment characters.
+
- Issue #1222: locale.format() bug when the thousands separator is a space
character.