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
On Wed, 2020-09-30 at 10:33 +0200, Thomas Goirand wrote: 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.
Cheers,
Thomas Goirand (zigo)