Hello community,

here is the log from the commit of package python-Werkzeug for openSUSE:Factory 
checked in at 2016-02-11 12:37:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Werkzeug (Old)
 and      /work/SRC/openSUSE:Factory/.python-Werkzeug.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Werkzeug"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Werkzeug/python-Werkzeug.changes  
2015-06-23 12:01:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-Werkzeug.new/python-Werkzeug.changes     
2016-02-11 12:37:49.000000000 +0100
@@ -1,0 +2,48 @@
+Mon Feb  8 13:01:58 UTC 2016 - [email protected]
+
+- Add 0001_create_a_thread_to_reap_death_process.patch
+  Fixes bsc#954591
+
+-------------------------------------------------------------------
+Mon Feb  8 12:35:28 UTC 2016 - [email protected]
+
+- update to 0.11.3:
+  - Added reloader_paths option to run_simple and other functions in
+    werkzeug.serving. This allows the user to completely override the
+    Python module watching of Werkzeug with custom paths.
+  - Many custom cached properties of Werkzeug’s classes are now
+    subclasses of Python’s property type (issue #616).
+  - bind_to_environ now doesn’t differentiate between implicit and
+    explicit default port numbers in HTTP_HOST (pull request #204).
+  - BuildErrors are now more informative. They come with a complete
+    sentence as error message, and also provide suggestions (pull
+    request #691).
+  - Fix a bug in the user agent parser where Safari’s build number
+    instead of version would be extracted (pull request #703).
+  - Fixed issue where RedisCache set_many was broken for twemproxy,
+    which doesn’t support the default MULTI command (pull request
+    #702).
+  - mimetype parameters on request and response classes are now always
+    converted to lowercase.
+  - Changed cache so that cache never expires if timeout is 0. This
+    also fixes an issue with redis setex (issue #550)
+  - Werkzeug now assumes UTF-8 as filesystem encoding on Unix if
+    Python detected it as ASCII.
+  - New optional has method on caches.
+  - Fixed various bugs in parse_options_header (pull request #643).
+  - If the reloader is enabled the server will now open the socket in
+    the parent process if this is possible. This means that when the
+    reloader kicks in the connection from client will wait instead of
+    tearing down. This does not work on all Python versions.
+  - Implemented PIN based authentication for the debugger. This can
+    optionally be disabled but is discouraged. This change was
+    necessary as it has been discovered that too many people run the
+    debugger in production.
+  - Devserver no longer requires SSL module to be installed.
+  - Reloader: Correctly detect file changes made by moving temporary
+    files over the original, which is e.g. the case with PyCharm (pull
+    request #722).
+  - Fix bool behavior of werkzeug.datastructures.ETags under Python 3
+    (issue #744).
+
+-------------------------------------------------------------------

Old:
----
  Werkzeug-0.10.4.tar.gz

New:
----
  0001_create_a_thread_to_reap_death_process.patch
  Werkzeug-0.11.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-Werkzeug.spec ++++++
--- /var/tmp/diff_new_pack.7F5TMd/_old  2016-02-11 12:37:50.000000000 +0100
+++ /var/tmp/diff_new_pack.7F5TMd/_new  2016-02-11 12:37:50.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-Werkzeug
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,15 @@
 
 
 Name:           python-Werkzeug
-Version:        0.10.4
+Version:        0.11.3
 Release:        0
 Url:            http://werkzeug.pocoo.org/
 Summary:        The Swiss Army knife of Python web development
 License:        BSD-3-Clause
 Group:          Development/Languages/Python
 Source:         
http://pypi.python.org/packages/source/W/Werkzeug/Werkzeug-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM 0001_create_a_thread_to_reap_death_process.patch 
bsc#954591
+Patch0:         0001_create_a_thread_to_reap_death_process.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  python-Sphinx
 BuildRequires:  python-devel
@@ -64,6 +66,7 @@
 %setup -q -n Werkzeug-%{version}
 sed -i "s/\r//" LICENSE # Fix wrong EOL-encoding
 sed -i "1d" 
examples/manage-{i18nurls,simplewiki,shorty,couchy,cupoftee,webpylike,plnt,coolmagic}.py
 # Fix non-executable scripts
+%patch0 -p1
 
 %build
 python setup.py build

++++++ 0001_create_a_thread_to_reap_death_process.patch ++++++
>From 676bc5fa4b6aa9d153c9805cdbad0ff0450bade6 Mon Sep 17 00:00:00 2001
From: Alberto Planas <[email protected]>
Date: Wed, 3 Feb 2016 11:56:23 +0100
Subject: [PATCH] Create a thread to reap death process

ForkingWSGIServer use `SocketServer.ForkingMixIn` to implement a
multiprocess server.  This class provides a workflow that collect
death process (process in Zombie status) before the
`process_request`.  This means that this process itself will be
in Zombie status at the end of the request, that will be eventually
collected during the next `process_request`.

To minimize transient Zombie process, `ForkingWSGIServer` is
creating a daemon thread (via `threading.Timer`) to call the
collector every (by default) 5 seconds.

Fixes #810
---
 werkzeug/serving.py | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/werkzeug/serving.py b/werkzeug/serving.py
index 15b6cd7..778df2d 100644
--- a/werkzeug/serving.py
+++ b/werkzeug/serving.py
@@ -41,6 +41,7 @@
 import socket
 import sys
 import signal
+import threading
 
 from ._compat import PY2

@@ -522,11 +523,29 @@ class ForkingWSGIServer(ForkingMixIn, BaseWSGIServer):
     multiprocess = True
 
     def __init__(self, host, port, app, processes=40, handler=None,
-                 passthrough_errors=False, ssl_context=None, fd=None):
+                 passthrough_errors=False, ssl_context=None, fd=None,
+                 frequency=5):
         BaseWSGIServer.__init__(self, host, port, app, handler,
                                 passthrough_errors, ssl_context, fd)
         self.max_children = processes
 
+        if frequency:
+            self.frequency = frequency
+            self.setup_reap_children()
+
+    def setup_reap_children(self):
+        """Create a thread to collect death children."""
+        t = threading.Timer(self.frequency, self.reap_children)
+        # Set daemon mode to provide a clean termination of the thread
+        # when the system ends
+        t.daemon = True
+        t.start()
+
+    def reap_children(self):
+        """Reap or collect death children."""
+        self.collect_children()
+        self.setup_reap_children()
+
 
 def make_server(host=None, port=None, app=None, threaded=False, processes=1,
                 request_handler=None, passthrough_errors=False,
++++++ Werkzeug-0.10.4.tar.gz -> Werkzeug-0.11.3.tar.gz ++++++
++++ 8397 lines of diff (skipped)


Reply via email to