Help with eventlet 0.26.1 and dnspython >= 2

Thomas Goirand zigo at debian.org
Wed Sep 30 08:33:32 UTC 2020


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.

Cheers,

Thomas Goirand (zigo)



More information about the openstack-discuss mailing list