Help with eventlet 0.26.1 and dnspython >= 2

Sean Mooney smooney at redhat.com
Wed Sep 30 15:50:46 UTC 2020


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 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.
> 
> 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)
> 




More information about the openstack-discuss mailing list