[Python-checkins] bpo-39205: Tests that highlight a hang on ProcessPoolExecutor shutdown (#18221)

Brian Quinlan webhook-mailer at python.org
Mon Jan 27 19:50:41 EST 2020


https://github.com/python/cpython/commit/884eb89d4a5cc8e023deaa65001dfa74a436694c
commit: 884eb89d4a5cc8e023deaa65001dfa74a436694c
branch: master
author: Brian Quinlan <brian at sweetapp.com>
committer: GitHub <noreply at github.com>
date: 2020-01-27T16:50:37-08:00
summary:

bpo-39205: Tests that highlight a hang on ProcessPoolExecutor shutdown (#18221)

files:
M Lib/test/test_concurrent_futures.py

diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py
index c97351636e869..c8fa35e9eeafa 100644
--- a/Lib/test/test_concurrent_futures.py
+++ b/Lib/test/test_concurrent_futures.py
@@ -342,6 +342,26 @@ def test_hang_issue12364(self):
         for f in fs:
             f.result()
 
+    def test_hang_issue39205(self):
+        """shutdown(wait=False) doesn't hang at exit with running futures.
+
+        See https://bugs.python.org/issue39205.
+        """
+        if self.executor_type == futures.ProcessPoolExecutor:
+            raise unittest.SkipTest(
+                "Hangs due to https://bugs.python.org/issue39205")
+
+        rc, out, err = assert_python_ok('-c', """if True:
+            from concurrent.futures import {executor_type}
+            from test.test_concurrent_futures import sleep_and_print
+            if __name__ == "__main__":
+                t = {executor_type}(max_workers=3)
+                t.submit(sleep_and_print, 1.0, "apple")
+                t.shutdown(wait=False)
+            """.format(executor_type=self.executor_type.__name__))
+        self.assertFalse(err)
+        self.assertEqual(out.strip(), b"apple")
+
 
 class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, BaseTestCase):
     def _prime_executor(self):



More information about the Python-checkins mailing list