summaryrefslogtreecommitdiffstats
path: root/execnet-1.1-issue9.patch
blob: ee321b1a47683b9969fa6fd2f20faed891290643 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 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