-
Notifications
You must be signed in to change notification settings - Fork 556
Eventlet <= 0.26.0 incompatible with dnspython >= 2.0.0 #559
Description
Users of eventlet <= 0.25.2 should pin dnspython to 1.16.0.
To implement its concurrency mechanism, eventlet replaces code in various APIs with its own versions, including two dnspython APIs, dns.query.udp() and dns.query.tcp(). These APIs changed in dnspython 2.0.0, and the eventlet versions for eventlet <= 0.25.2 no longer work.
Problems most typically manifest as timeouts, as the resolver tries to pass the raise_on_truncation parameter to dns.query.udp(). This causes an exception as the eventlet code does not implement this flag. The resolver treats the exception as a "try again" type error, and hence the resolution never makes progress and ultimately times out.
Other manifestations are strange, e.g. #557 and #558, where dnspython is not in the backtrace, yet pinning dnspython to 1.16.0 still fixes the problem.
This issue will remain open for a time to try to reduce duplicate issue reports. The eventlet tracking issue is eventlet/eventlet#629.