diff --git a/python-gunicorn.changes b/python-gunicorn.changes index 458c7f0..fe595e8 100644 --- a/python-gunicorn.changes +++ b/python-gunicorn.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Nov 18 23:11:22 UTC 2021 - Steve Kowalik + +- Add patch support-eventlet-30-3.patch: + * Upstream patch to support eventlet >= 0.30.3 + ------------------------------------------------------------------- Mon Jul 5 15:12:53 UTC 2021 - Antonio Larrosa diff --git a/python-gunicorn.spec b/python-gunicorn.spec index 2cee756..93e0ea6 100644 --- a/python-gunicorn.spec +++ b/python-gunicorn.spec @@ -34,6 +34,7 @@ License: MIT Group: Development/Languages/Python URL: https://gunicorn.org Source: https://files.pythonhosted.org/packages/source/g/gunicorn/gunicorn-%{version}.tar.gz +Patch0: support-eventlet-30-3.patch BuildRequires: %{python_module setuptools >= 3.0} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -79,6 +80,7 @@ sed -i 's/==.*//' requirements_test.txt sed -i -e '/cover/d' requirements_test.txt # do not check coverage sed -i -e 's/--cov[^ ]*//' -e 's/--cov-report[^ ]*//' setup.cfg +%autopatch -p1 %if %{with test} %check diff --git a/support-eventlet-30-3.patch b/support-eventlet-30-3.patch new file mode 100644 index 0000000..af35610 --- /dev/null +++ b/support-eventlet-30-3.patch @@ -0,0 +1,50 @@ +From 6a8ebb4844b2f28596ffe7421eb9f7d08c8dc4d8 Mon Sep 17 00:00:00 2001 +From: Sergey Shepelev +Date: Thu, 6 May 2021 12:54:06 +0300 +Subject: [PATCH] eventlet worker: ALREADY_HANDLED -> WSGI_LOCAL + +Eventlet v0.30.3+ removed wsgi.ALREADY_HANDLED in favor of +`wsgi.WSGI_LOCAL.already_handled: bool` + +Sorry, this breaking change happened during only patch +version increase 0.30.2 -> 0.30.3 + +https://github.com/eventlet/eventlet/issues/543 +https://github.com/eventlet/eventlet/pull/544 +--- + gunicorn/workers/geventlet.py | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/gunicorn/workers/geventlet.py b/gunicorn/workers/geventlet.py +index ffdb206c0..ea82f3d62 100644 +--- a/gunicorn/workers/geventlet.py ++++ b/gunicorn/workers/geventlet.py +@@ -17,11 +17,16 @@ + + from eventlet import hubs, greenthread + from eventlet.greenio import GreenSocket +-from eventlet.wsgi import ALREADY_HANDLED as EVENTLET_ALREADY_HANDLED ++import eventlet.wsgi + import greenlet + + from gunicorn.workers.base_async import AsyncWorker + ++# ALREADY_HANDLED is removed in 0.30.3+ now it's `WSGI_LOCAL.already_handled: bool` ++# https://github.com/eventlet/eventlet/pull/544 ++EVENTLET_WSGI_LOCAL = getattr(eventlet.wsgi, "WSGI_LOCAL", None) ++EVENTLET_ALREADY_HANDLED = getattr(eventlet.wsgi, "ALREADY_HANDLED", None) ++ + + def _eventlet_socket_sendfile(self, file, offset=0, count=None): + # Based on the implementation in gevent which in turn is slightly +@@ -125,6 +130,10 @@ def patch(self): + patch_sendfile() + + def is_already_handled(self, respiter): ++ # eventlet >= 0.30.3 ++ if getattr(EVENTLET_WSGI_LOCAL, "already_handled", None): ++ raise StopIteration() ++ # eventlet < 0.30.3 + if respiter == EVENTLET_ALREADY_HANDLED: + raise StopIteration() + return super().is_already_handled(respiter)