mirror of
https://github.com/hickory-dns/hickory-dns.git
synced 2026-04-25 11:15:54 +03:00
[GH-ISSUE #1540] Client gets stuck in broken state (ProtoError "busy") after a few minutes #695
Labels
No labels
blocked
breaking-change
bug
bug:critical
bug:tests
cleanup
compliance
compliance
compliance
crate:all
crate:client
crate:native-tls
crate:proto
crate:recursor
crate:resolver
crate:resolver
crate:rustls
crate:server
crate:util
dependencies
docs
duplicate
easy
easy
enhance
enhance
enhance
feature:dns-over-https
feature:dns-over-quic
feature:dns-over-tls
feature:dnsssec
feature:global_lb
feature:mdns
feature:tsig
features:edns
has workaround
ops
perf
platform:WASM
platform:android
platform:fuchsia
platform:linux
platform:macos
platform:windows
pull-request
question
test
tools
tools
trust
unclear
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/hickory-dns#695
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ErwanDL on GitHub (Aug 19, 2021).
Original GitHub issue: https://github.com/hickory-dns/hickory-dns/issues/1540
Hello, I am encountering a weird bug where my DNS client becomes broken and stays in that state after having worked normally for a few minutes. My use case is a background-running task, in which an
AsyncClientqueries my Kubernetes cluster's DNS (kube-dns) every 5 seconds to list the IPs of deployed pods in a service. When I start the task, it works perfectly fine for the first ~2 minutes, returning the correct results, and then the queries start returning anErrof typeProtoError { kind: Busy }. I can observe the exact same behaviour on my local machine and on my prod cluster.Here are high-level logs of the requests first succeeding, then failing:
There is no other component in my application using the client, and I don't believe anything is interacting with it. Can you help me understand what this
ProtoError { kind: Busy }means, and what could cause it to enter this broken state ?@djc commented on GitHub (Aug 25, 2021):
What version are you using? Maybe try the main branch? There have been some changes that might impact this.
@ErwanDL commented on GitHub (Aug 25, 2021):
I have resorted to using tokio's lookup_host in the meantime instead, I unfortunately don't have the setup to reproduce this anymore.
@bluejekyll commented on GitHub (Aug 25, 2021):
I don't really recommend using the client for DNS query/resolution. The resolver is designed for that use case.
For this particular issue, there would be a lot of questions to pull apart. What protocol are you using for the connections? Are you using the DnsMultiplexer? (that will produce a busy error if there are futures that aren't being consumed, https://github.com/bluejekyll/trust-dns/blob/main/crates/proto/src/xfer/dns_multiplexer.rs#L274 )
My guess, based on that error, is that your code is opening more connections than are being consuming, and you're running into the default channel buffer size of 32.