On Wed, 2020-09-30 at 16:47 +0200, Thomas Goirand wrote:
On 9/30/20 12:58 PM, Sean Mooney wrote:
On Wed, 2020-09-30 at 10:33 +0200, Thomas Goirand wrote:
On 9/30/20 12:43 AM, Tim Burke wrote:
On 9/29/20 1:43 AM, Thomas Goirand wrote:
On 9/28/20 6:10 PM, Radosław Piliszek wrote:
On Mon, Sep 28, 2020 at 5:30 PM Thomas Goirand <zigo@debian.org> wrote: > > Hi, > > As you may know, eventlet is incompatible with dnspython >= 2.0.0.0rc1. > See [1] for the details. However, Debian unstable has 2.0.0. > > Would there be some good soul willing to help me fix this situation? I > would need a patch to fix this, but I'm really not sure how to start. > > Cheers, > > Thomas Goirand (zigo)
The [1] reference is missing.
-yoctozepto
Indeed, sorry. So:
[1] https://github.com/eventlet/eventlet/issues/619
I've already integrated this patch in the Debian package: https://github.com/eventlet/eventlet/commit/46fc185c8f92008c65aef2713fc1445b...
However, there's still this failure, related to #619 (linked above):
ERROR: test_noraise_dns_tcp (tests.greendns_test.TinyDNSTests) -------------------------------------------------------------- Traceback (most recent call last): File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_eventlet/build/tests/greendns_test.py",
line 904, in test_noraise_dns_tcp self.assertEqual(response.rrset.items[0].address, expected_ip) KeyError: 0
Can anyone solve this?
Cheers,
Thomas Goirand (zigo)
Swapping out the assertion for one like
self.assertEqual( [rr.address for rr in response.rrset.items], [expected_ip])
should at least get tests passing, but the other issues identified are still problems:
Eventlet will need to detect which version of dnspython is running (import dns.version) and monkey patch appropriately. Note that the raise_on_truncation is not the only change, as the af parameter is now gone, and you can also pass sockets to both udp() and tcp().
IDK how different udp()/tcp() should be between the pre/post-2.0.0 versions, though. Part of me is tempted to try patching out dns.query._wait_for instead...
Tim
Hi Tim,
Thanks for your follow-up. Your advice above fixed the issue, however at least 2 tests aren't deterministic:
- tests.subprocess_test.test_communicate_with_poll - tests.subprocess_test.test_communicate_with_poll
They both failed at least once with as error: "BlockingIOError: [Errno 11] Resource temporarily unavailable". Any idea what's going on?
I've uploaded eventlet 0.26.1 to Experimental anyways, but I really hope we can fix the remaining issues.
just to be clear that is not the only incompatiably with dnspython >=2 https://github.com/eventlet/eventlet/issues/632 so we cannot uncap this even if https://github.com/eventlet/eventlet/issues/619 is fixed we also need to resolve teh issue wtih ssl which breaks the nova console proxy that is breaking nova via websockify which gets a TypeError: _wrap_socket() argument 1 must be _socket.socket, not GreenSSLSocket
when you use dnspython it seams to monkey patch the ssl sockets incorrectly. so we cannot support dnspython2 untill that is also resolved or nova console wont work anymore.
If this cannot be resolved before February, there's the risk that Debian Bullseye will have a broken OpenStack then. I don't think it's going to be easy to convince the maintainer of dnspython in Debian to revert his upload when it's been already 3 months dnspython 2.0 was released.
Do we know if there is anything apart from the Nova console that will be broken, somehow? we do not know if there are other failrue neutron has a spereate issue which was tracked by https://github.com/eventlet/eventlet/issues/619 and nova hit the ssl issue with websockify and eventlets tracked by https://github.com/eventlet/eventlet/issues/632
so the issue is really eventlets is not compatiabley with dnspython 2.0 so before openstack can uncap dnspython eventlets need to gain support for dnspython 2.0 that should hopefully resolve the issues that nova, neutron and other projects are now hitting. it is unlikely that this is something we can resolve in openstack alone, not unless we are willing to monkeyptych eventlets and other dependcies so really we need to work with eventlets and or dnspython to resolve the incompatiablity caused by the dnspython changes in 2.0
Cheers,
Thomas Goirand (zigo)