Package: python3-eventlet
Version: 0.26.1-7
Severity: important

Dear Maintainer,

Trying to run mapproxy within gunicorn on bullseye (using eventlet workers), i
faced DNS issues inside mapproxy, leading to errors like

WARNING - mapproxy.source.wms - could not retrieve WMS map: No response from 
URL 
"http://ids:9280/wxs/pci/wms?layers=cadastre_2021&transparent=True&format=image%2Fpng&bbox=784853.4374968336,6463266.770836733,786573.2291634664,6464986.562503366&width=1300&height=1300&srs=EPSG%3A2154&request=GetMap&version=1.1.1&service=WMS&styles=":
 Lookup timed out

this shows that the complete stack is hitting an error message from greendns
(https://github.com/eventlet/eventlet/blob/v0.26.1/eventlet/support/greendns.py#L80),
which is monkeypatching the default socket python module.

looking on the interwebs, i found out
https://github.com/eventlet/eventlet/issues/629 which is supposedly already
fixed in the debian stable package by
https://sources.debian.org/patches/python-eventlet/0.26.1-7/Replace-dnspython-_compute_expiration-by-_compute_times.patch/

but in my experience the bug isnt completely fixed, because a simple reproducer
(as seen on
https://github.com/eventlet/eventlet/issues/629#issuecomment-666549015) still
fails on bullseye:

[30/11 11:32] [email protected]:/tmp $cat testdnspy.py
import eventlet.support.greendns as gd
p = gd.ResolverProxy()
try:
    a = p.query('www.dnspython.org')
    print(a.rrset)
except Exception as e:
    print('bad', e)
[30/11 11:40] [email protected]:/tmp $dpkg -l |egrep '(dnsp|eventl|monoto)'
ii  python3-dnspython          2.0.0-1                        all          DNS 
toolkit for Python 3
ii  python3-eventlet           0.26.1-7                       all          
concurrent networking library
ii  python3-monotonic          1.5-3                          all          
implementation of time.monotonic() - Python 3.x
[30/11 11:49] [email protected]:/tmp $python3 testdnspy.py 
bad The DNS operation timed out after 5.105822324752808 seconds

using pip to test working envs on another system, 
eventlet-0.32.0+dnspython-2.0.0 and dnspython-1.16.0+eventlet-0.26.1 both work 
with the test code:

[11:36] daytona:/tmp/ $test/bin/python3 testdnspy.py
dmfrjf4ips8xa.cloudfront.net. 60 IN A 52.222.149.64
dmfrjf4ips8xa.cloudfront.net. 60 IN A 52.222.149.128
dmfrjf4ips8xa.cloudfront.net. 60 IN A 52.222.149.51
dmfrjf4ips8xa.cloudfront.net. 60 IN A 52.222.149.55

maybe more bits from https://github.com/eventlet/eventlet/pull/722 should be 
backported ?

-- System Information:
Debian Release: 11.1
  APT prefers stable-security
  APT policy: (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-10-amd64 (SMP w/40 CPU threads)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages python3-eventlet depends on:
ii  netbase            6.3
ii  python3            3.9.2-3
pn  python3-dnspython  <none>
pn  python3-greenlet   <none>
pn  python3-monotonic  <none>
ii  python3-six        1.16.0-2

python3-eventlet recommends no packages.

Versions of packages python3-eventlet suggests:
pn  python-eventlet-doc  <none>

Reply via email to