[python-eventlet] update patch to avoid leak of _DummyThread objects

Pádraig Brady pbrady at fedoraproject.org
Tue Mar 27 12:05:55 UTC 2012


commit 87088d39a48f73a57e46eaf4571873aa01ce28aa
Author: Pádraig Brady <P at draigBrady.com>
Date:   Tue Mar 27 12:46:01 2012 +0100

    update patch to avoid leak of _DummyThread objects
    
    This update is needed to fix a KeyError on exit under Python 2.7

 dummythread_leak.patch |   24 ++++++++++++++++--------
 python-eventlet.spec   |   12 ++++++++----
 2 files changed, 24 insertions(+), 12 deletions(-)
---
diff --git a/dummythread_leak.patch b/dummythread_leak.patch
index fa9fe86..85d2355 100644
--- a/dummythread_leak.patch
+++ b/dummythread_leak.patch
@@ -1,6 +1,6 @@
 diff -Naur eventlet-0.9.16.orig/eventlet/green/threading.py eventlet-0.9.16/eventlet/green/threading.py
---- eventlet-0.9.16.orig/eventlet/green/threading.py	2010-06-07 19:15:37.000000000 +0000
-+++ eventlet-0.9.16/eventlet/green/threading.py	2012-03-05 20:08:51.932476383 +0000
+--- eventlet-0.9.16.orig/eventlet/green/threading.py	2012-03-27 11:39:17.557782270 +0000
++++ eventlet-0.9.16/eventlet/green/threading.py	2012-03-27 11:39:42.604113535 +0000
 @@ -1,9 +1,16 @@
 +"""Implements the standard threading module, using greenthreads."""
  from eventlet import patcher
@@ -11,7 +11,7 @@ diff -Naur eventlet-0.9.16.orig/eventlet/green/threading.py eventlet-0.9.16/even
  __patched__ = ['_start_new_thread', '_allocate_lock', '_get_ident', '_sleep',
 -               'local', 'stack_size', 'Lock']
 +               'local', 'stack_size', 'Lock', 'currentThread',
-+               'current_thread', '_after_fork']
++               'current_thread', '_after_fork', '_shutdown']
 +
 +__orig_threading = patcher.original('threading')
 +__threadlocal = __orig_threading.local()
@@ -124,8 +124,8 @@ diff -Naur eventlet-0.9.16.orig/eventlet/green/threading.py eventlet-0.9.16/even
 +
 +currentThread = current_thread
 diff -Naur eventlet-0.9.16.orig/eventlet/patcher.py eventlet-0.9.16/eventlet/patcher.py
---- eventlet-0.9.16.orig/eventlet/patcher.py	2011-04-11 06:56:59.000000000 +0000
-+++ eventlet-0.9.16/eventlet/patcher.py	2012-03-05 20:08:45.749398303 +0000
+--- eventlet-0.9.16.orig/eventlet/patcher.py	2012-03-27 11:39:17.558782283 +0000
++++ eventlet-0.9.16/eventlet/patcher.py	2012-03-27 11:39:35.148014914 +0000
 @@ -223,7 +223,6 @@
          on.setdefault(modname, default_on)
          
@@ -171,9 +171,9 @@ diff -Naur eventlet-0.9.16.orig/eventlet/patcher.py eventlet-0.9.16/eventlet/pat
      """Returns True if the given module is monkeypatched currently, False if
      not.  *module* can be either the module itself or its name.
 diff -Naur eventlet-0.9.16.orig/tests/patcher_test.py eventlet-0.9.16/tests/patcher_test.py
---- eventlet-0.9.16.orig/tests/patcher_test.py	2011-02-16 00:59:54.000000000 +0000
-+++ eventlet-0.9.16/tests/patcher_test.py	2012-03-05 20:08:51.933476395 +0000
-@@ -293,5 +293,175 @@
+--- eventlet-0.9.16.orig/tests/patcher_test.py	2012-03-27 11:39:17.560782309 +0000
++++ eventlet-0.9.16/tests/patcher_test.py	2012-03-27 11:39:42.604113535 +0000
+@@ -293,5 +293,183 @@
          self.assertEqual(output, "done\n", output)
  
  
@@ -267,6 +267,14 @@ diff -Naur eventlet-0.9.16.orig/tests/patcher_test.py eventlet-0.9.16/tests/patc
 +        self.assert_(lines[0].startswith('<_GreenThread'), lines[0])
 +        self.assertEqual(lines[1], "1", lines[1])
 +
++    def test_keyerror(self):
++        new_mod = """import eventlet
++eventlet.monkey_patch()
++"""
++        self.write_to_tempfile("newmod", new_mod)
++        output, lines = self.launch_subprocess('newmod')
++        self.assertEqual(len(lines), 1, "\n".join(lines))
++
 +
 +class GreenThreadWrapper(ProcessBase):
 +    prologue = """import eventlet
diff --git a/python-eventlet.spec b/python-eventlet.spec
index f5b9291..4edaf08 100644
--- a/python-eventlet.spec
+++ b/python-eventlet.spec
@@ -4,7 +4,7 @@
 
 Name:           python-eventlet
 Version:        0.9.16
-Release:        5%{?dist}
+Release:        6%{?dist}
 Summary:        Highly concurrent networking library
 Group:          Development/Libraries
 License:        MIT
@@ -14,9 +14,10 @@ Source0:        http://pypi.python.org/packages/source/e/eventlet/eventlet-%{ver
 # From https://bitbucket.org/which_linden/eventlet/issue/89/add-a-timeout-argument-to-subprocesspopen
 # Required on RHEL >= 6.1 where python 2.6 has the backported timeout support
 Patch1:         subprocess_timeout.patch
-# From https://bitbucket.org/jerdfelt/eventlet/changeset/2a02c700f51a/raw/
-#      https://bitbucket.org/jerdfelt/eventlet/changeset/55b6de9bd947/raw/
-#      https://bitbucket.org/jerdfelt/eventlet/changeset/6603e234fc56/raw/
+# From https://bitbucket.org/which_linden/eventlet/changeset/2a02c700f51a/raw/
+#      https://bitbucket.org/which_linden/eventlet/changeset/55b6de9bd947/raw/
+#      https://bitbucket.org/which_linden/eventlet/changeset/6603e234fc56/raw/
+#      https://bitbucket.org/which_linden/eventlet/changeset/f3fd4562f347/raw/
 # To plug _DummyThread leak described at https://bugs.launchpad.net/nova/+bug/903199
 Patch2:         dummythread_leak.patch
 
@@ -86,6 +87,9 @@ rm -rf %{buildroot}
 %endif
 
 %changelog
+* Tue Mar 27 2012 Pádraig Brady <P at draigBrady.com - 0.9.16-6
+- Update patch to avoid leak of _DummyThread objects
+
 * Mon Mar  5 2012 Pádraig Brady <P at draigBrady.com - 0.9.16-5
 - Fix patch to avoid leak of _DummyThread objects
 


More information about the scm-commits mailing list