You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
python-execnet/execnet-1.1-issue9.patch

72 lines
2.2 KiB

# HG changeset patch
# User Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
# Date 1346694793 -7200
# Node ID 49c5934137e5f8ac9d16ea96ac2a5c01149ad190
# Parent ec10c11ac8eb248a995c70ad2fee426315249f33
fix issue #9 - terminate the worker threadpools in safe_terminate
diff -r ec10c11ac8eb248a995c70ad2fee426315249f33 -r 49c5934137e5f8ac9d16ea96ac2a5c01149ad190 CHANGELOG
--- a/CHANGELOG Wed Jun 20 18:16:40 2012 +0200
+++ b/CHANGELOG Mon Sep 03 19:53:13 2012 +0200
@@ -23,6 +23,8 @@
- fix issue #2 - properly reconfigure the channels string coercion for rsync,
so it can send from python2 to python3
+- fix issue #9 - propperly terminate the worker threadpools in safe_terminate
+
- refactor socketserver, so it can be directly remote_exec'd for starting a socket gateway on a remote
diff -r ec10c11ac8eb248a995c70ad2fee426315249f33 -r 49c5934137e5f8ac9d16ea96ac2a5c01149ad190 execnet/multi.py
--- a/execnet/multi.py Wed Jun 20 18:16:40 2012 +0200
+++ b/execnet/multi.py Mon Sep 03 19:53:13 2012 +0200
@@ -252,6 +252,8 @@
replylist.append(reply)
for reply in replylist:
reply.get()
+ workerpool.shutdown()
+ workerpool.join()
default_group = Group()
diff -r ec10c11ac8eb248a995c70ad2fee426315249f33 -r 49c5934137e5f8ac9d16ea96ac2a5c01149ad190 testing/test_multi.py
--- a/testing/test_multi.py Wed Jun 20 18:16:40 2012 +0200
+++ b/testing/test_multi.py Mon Sep 03 19:53:13 2012 +0200
@@ -2,6 +2,8 @@
tests for multi channels and gateway Groups
"""
+import threading
+from time import sleep
import execnet
import py
from execnet.gateway_base import Channel
@@ -193,6 +195,7 @@
def test_safe_terminate():
+ active = threading.active_count()
l = []
def term():
py.std.time.sleep(3)
@@ -200,8 +203,12 @@
l.append(1)
safe_terminate(1, [(term, kill)] * 10)
assert len(l) == 10
+ sleep(0.1)
+ py.std.gc.collect()
+ assert threading.active_count() == active
def test_safe_terminate2():
+ active = threading.active_count()
l = []
def term():
return
@@ -209,3 +216,6 @@
l.append(1)
safe_terminate(3, [(term, kill)] * 10)
assert len(l) == 0
+ sleep(0.1)
+ py.std.gc.collect()
+ assert threading.active_count() == active