Skip to content

Eventlet <= 0.26.0 incompatible with dnspython >= 2.0.0 #559

@rthalley

Description

@rthalley

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions