Help with eventlet 0.26.1 and dnspython >= 2

Thomas Goirand zigo at debian.org
Wed Sep 30 14:47:44 UTC 2020


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?

Cheers,

Thomas Goirand (zigo)



More information about the openstack-discuss mailing list