Help with eventlet 0.26.1 and dnspython >= 2

Sean Mooney smooney at redhat.com
Wed Sep 30 10:58:02 UTC 2020


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 at 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/46fc185c8f92008c65aef2713fc1445bfc5f6fec
> > > 
> > > 
> > > 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.


> 
> Cheers,
> 
> Thomas Goirand (zigo)
> 




More information about the openstack-discuss mailing list