-
Notifications
You must be signed in to change notification settings - Fork 320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SSL.py recursion crash in (eventlet > 0.17.4) and python 3.6 #371
Comments
Simpler code to reproduce bug:
Shamelessly taken from: https://www.bountysource.com/issues/32684217-using-both-eventlet-monkey_patch-and-eventlet-wsgi-server-together-with-ssl-fails-with-ssl-sslwantreaderror, but now with different error |
Eventlet > 0.17.4 has a problem with Python 3.6: eventlet/eventlet#371
Eventlet > 0.17.4 has a problem with Python 3.6: eventlet/eventlet#371
Similar error while using Requests library, fixed by reverting to 0.17.4 as mentioned.:
|
Hi all, what is needed to get new eventlet versions working with python 3.6, either on the python side or eventlet side? |
Try to uninstall pyopenssl if possible, please say if it helps. |
@j-walker23 @Hoffs- @Renmusxd please try |
I'm having this same problem as well, but PyOpenSSL is not installed. Also using Flask 0.12, Flask-SocketIO 2.8.6. |
@Heanthor thank you. |
Thanks for the replies! I will test on my gce box running ubuntu and report back. |
@temoto I actually didn't have pyopenssl installed either. Should I only be trying |
@j-walker23 I'm sorry old version is the only workaround right now. I understand this is an important issue but haven't find solution yet. |
@temoto no problem at all. just was curious because i seem to be able to run the latest eventlet on my mac with py36. but when deployed on ubuntu it has this error so i assumed i was just screwing it up. Thank you, really appreciate the lib! |
The ssl module of Python3.6 has made variable options, verify_flags, verify_mode of SSLContext as property, so setting value of the specified property caused function recursively call after eventlet monkey patch. The following code can be found in Python3.6 ssl module.
As gevent's fixup of this issue:
Insert if statement in SSLContext definition and decorate set property function. |
@justdoit0823 thanks a lot! |
Everybody, please, try this version.
|
@richardasaurus that's very strange, please show full terminal session how you got it. |
Hey guys, the fix was released on PyPI as v0.21.0. Please tell me if it helps. |
Awesome, thank you! |
@richardasaurus well show everything related to this error from deployment. I can only help knowing how to reproduce the problem. |
I can confirm that 0.21.0 fixes the eventlet / requests issue. Can't seem to reproduce the compile error @richardasaurus has. |
I'm still seeing a similar error on eventlet 0.21.0 due to some kind of incredibly bizarre interaction with logging to the root logger at toplevel: https://github.com/benkuhn/eventlet-repro |
@benkuhn thank you very much for reproduction repo. Please post |
I've pushed an even more minimal repro. Still working on minimizing further. Note that it may be related to newrelic vendoring an old urllib version. |
In another project, we had to downgrade to version 1.16.0 for this to work. |
What is the current state of this issue? I'm running into the same issue with Python 3.6.9 and eventlet 0.30.0. Had to downgrade to 0.17.4 for it to work (dnspython-1.16.0 installed, this was not the issue apparently). |
This can be a symptom of several different problems, I think. For folks who are still experiencing it even with dnspython<2, check that nothing is importing requests before the monkey patch is applied. |
Use the default value provided by tox: https://tox.readthedocs.io/en/latest/config.html#conf-install_command See discussion on the openstack-discuss ML [1] for the complete context. To get this fix in, we'll need to raise a few requirements: - eventlet because of the ssl issues with python3.6 in older packages (eventlet/eventlet#371) - oslo.messaging to fix the error "ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN.". - psycopg2-binary since 2.6.2 is blacklisted - oslo.service was bumped to 2.1.0, to pick up its support for eventlet>=0.22 - oslo.utils was bumped to match the lower constraint from oslo.service at 2.1.0 [1] http://lists.openstack.org/pipermail/openstack-discuss/2020-April/014237.html Change-Id: I6344f44fb955d631a4f0a13fa53ecc19826c7ea6 Signed-off-by: Goutham Pacha Ravi <gouthampravi@gmail.com>
Seems that the Sentry logger causes a import of requests before the monkey patch of the eventlet happens. eventlet/eventlet#371 (comment) With Wallaby this seems now be an issue and causes a loop when importing the modules like here: eventlet/eventlet#677 although it is not dnspython >= 2 related.
What is the status of this? |
Replicated on:
|
I seem to be having a similar issue, and would like to know whether it is related. I have narrowed down the replication to using Here is the replication:
And here is the list of package versions from pip:
|
Hi! Same here mb Timeout involved
Python 3.8
|
We want this patch [0] in eventlet that avoids contacting nameservers if there's at least one (IPv4 or IPv6) entry in the hosts file. In the case where no nameservers are configured, this will avoid unnecessary delays when resolving hostnames. Also eventlet <v0.21.0 is affected by [1] on Python 3.6 causing neutron to fail with SSL enabled. The issue is fixed in v0.21.0 Also updates os-xenapi to compatible version. [0] eventlet/eventlet@10ff67f [1] eventlet/eventlet#371 Closes-bug: #1785615 Closes-bug: #1884808 Depends-On: https://review.opendev.org/#/c/736194/ Change-Id: Ia18372625d1e5c87a3afdb5617f0390c19d46470
We want this patch [0] in eventlet that avoids contacting nameservers if there's at least one (IPv4 or IPv6) entry in the hosts file. In the case where no nameservers are configured, this will avoid unnecessary delays when resolving hostnames. Also eventlet <v0.21.0 is affected by [1] on Python 3.6 causing neutron to fail with SSL enabled. The issue is fixed in v0.21.0 Also updates os-xenapi to compatible version. [0] eventlet/eventlet@10ff67f [1] eventlet/eventlet#371 Change-Id: Ia18372625d1e5c87a3afdb5617f0390c19d46470 Closes-bug: #1785615 Closes-bug: #1884808
We want this patch [0] in eventlet that avoids contacting nameservers if there's at least one (IPv4 or IPv6) entry in the hosts file. In the case where no nameservers are configured, this will avoid unnecessary delays when resolving hostnames. Also eventlet <v0.21.0 is affected by [1] on Python 3.6 causing neutron to fail with SSL enabled. The issue is fixed in v0.21.0 Also updates os-xenapi to compatible version. [0] eventlet/eventlet@10ff67f [1] eventlet/eventlet#371 Closes-bug: #1785615 Closes-bug: #1884808 Change-Id: Ia18372625d1e5c87a3afdb5617f0390c19d46470
We want this patch [0] in eventlet that avoids contacting nameservers if there's at least one (IPv4 or IPv6) entry in the hosts file. In the case where no nameservers are configured, this will avoid unnecessary delays when resolving hostnames. Also eventlet <v0.21.0 is affected by [1] on Python 3.6 causing neutron to fail with SSL enabled. The issue is fixed in v0.21.0 [0] eventlet/eventlet@10ff67f [1] eventlet/eventlet#371 Change-Id: Ia18372625d1e5c87a3afdb5617f0390c19d46470 Closes-bug: #1785615 Closes-bug: #1884808
We want this patch [0] in eventlet that avoids contacting nameservers if there's at least one (IPv4 or IPv6) entry in the hosts file. In the case where no nameservers are configured, this will avoid unnecessary delays when resolving hostnames. Also eventlet <v0.21.0 is affected by [1] on Python 3.6 causing neutron to fail with SSL enabled. The issue is fixed in v0.21.0 Also updates os-xenapi to compatible version. [0] eventlet/eventlet@10ff67f [1] eventlet/eventlet#371 Closes-bug: #1785615 Closes-bug: #1884808 Change-Id: Ia18372625d1e5c87a3afdb5617f0390c19d46470
Patch Set 1: Code-Review+1 Have been trying to get py3.6 working with vmware-nsx (a neutron plugin project), but with eventlet 20.x is failing with [1]. Eventlet 0.24.1 fixes this issue. I also ran py36 + eventlet 0.24.1 with neutron UTs locally; green. [1] eventlet/eventlet#371 Patch-set: 1 Reviewer: Gerrit User 5367 <5367@4a232e18-c5a9-48ee-94c0-e04e7cca6543> Label: Code-Review=+1
Eventlet v0.20.0 is affected by [0] causing neutron-rpc-server to fail with SSL enabled. The issue is fixed in v0.21.0 [0] eventlet/eventlet#371 Closes-Bug: #1884808 Change-Id: I9c8e226166358c7d4e3b5cd57512ac08497aee02 Signed-off-by: Andrii Ostapenko <andrii.ostapenko@att.com>
Eventlet v0.20.0 is affected by [0] on Python 3.6 causing neutron-rpc-server to fail with SSL enabled. The issue is fixed in v0.21.0 Though issue affects Python 3.6 and above, there's a value to try keeping its version consistent among all Python versions. [0] eventlet/eventlet#371 Closes-Bug: #1884808 Change-Id: I9c8e226166358c7d4e3b5cd57512ac08497aee02 Signed-off-by: Andrii Ostapenko <andrii.ostapenko@att.com>
Using python 3.6 with the following code causes an infinite recursion of python super calls leading to a crash
Trace:
Issue also posted to http://bugs.python.org/issue29149, and miguelgrinberg/Flask-SocketIO#193, but since it's eventlet version dependent may also be relevant here.
The text was updated successfully, but these errors were encountered: