]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-38546: Fix concurrent.futures test_ressources_gced_in_workers() (GH-17652) (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 18 Dec 2019 20:51:09 +0000 (12:51 -0800)
committerGitHub <noreply@github.com>
Wed, 18 Dec 2019 20:51:09 +0000 (12:51 -0800)
Fix test_ressources_gced_in_workers() of test_concurrent_futures:
explicitly stop the manager to prevent leaking a child process
running in the background after the test completes.

(cherry picked from commit 673c39331f844a80c465efd7cff88ac55c432bfb)
(cherry picked from commit b0eb046cbd0dbb7b17f16aad6de20fac5305f387)

Co-authored-by: Victor Stinner <vstinner@python.org>
Lib/test/test_concurrent_futures.py
Misc/NEWS.d/next/Tests/2019-12-18-14-52-08.bpo-38546.2kxNuM.rst [new file with mode: 0644]

index ad68909161c7300ab6ef70ca5ed6728095f79700..b42670e16a6c998742d27a2110856f19b485e375 100644 (file)
@@ -84,8 +84,7 @@ class MyObject(object):
 
 
 class EventfulGCObj():
-    def __init__(self, ctx):
-        mgr = get_context(ctx).Manager()
+    def __init__(self, mgr):
         self.event = mgr.Event()
 
     def __del__(self):
@@ -818,12 +817,21 @@ class ProcessPoolExecutorTest(ExecutorTest):
     def test_ressources_gced_in_workers(self):
         # Ensure that argument for a job are correctly gc-ed after the job
         # is finished
-        obj = EventfulGCObj(self.ctx)
+        mgr = get_context(self.ctx).Manager()
+        obj = EventfulGCObj(mgr)
         future = self.executor.submit(id, obj)
         future.result()
 
         self.assertTrue(obj.event.wait(timeout=1))
 
+        # explicitly destroy the object to ensure that EventfulGCObj.__del__()
+        # is called while manager is still running.
+        obj = None
+        test.support.gc_collect()
+
+        mgr.shutdown()
+        mgr.join()
+
 
 create_executor_tests(ProcessPoolExecutorTest,
                       executor_mixins=(ProcessPoolForkMixin,
diff --git a/Misc/NEWS.d/next/Tests/2019-12-18-14-52-08.bpo-38546.2kxNuM.rst b/Misc/NEWS.d/next/Tests/2019-12-18-14-52-08.bpo-38546.2kxNuM.rst
new file mode 100644 (file)
index 0000000..d8ec7ca
--- /dev/null
@@ -0,0 +1,3 @@
+Fix test_ressources_gced_in_workers() of test_concurrent_futures: explicitly
+stop the manager to prevent leaking a child process running in the background
+after the test completes.