mirror of
https://github.com/hickory-dns/hickory-dns.git
synced 2026-04-25 03:05:51 +03:00
[GH-ISSUE #3119] Repetitive queries in DnssecClient #1135
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#1135
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 @divergentdave on GitHub (Jul 14, 2025).
Original GitHub issue: https://github.com/hickory-dns/hickory-dns/issues/3119
DnssecDnsHandlemay make multiple concurrent identical requests forDNSKEYorDSRRsets during validation. This is not a problem for the recursive name server, as it uses aRecursorPoolat lower levels, which deduplicates concurrent requests, along with a response cache for recent queries.DnssecClientdoes not have any deduplication or caching features, so it may send duplicate requests to its configured resolver.DnssecClientwraps aDnssecDnsHandle<Client>, and theClientwraps theDnsExchangewhich performs network communications.On the other hand, the client integration tests in
dnssec_client_handle_tests.rsdo not directly useDnssecClient, but instead construct aDnssecDnsHandle<MemoizeClientHandle<Client>>through multiple steps. TheMemoizeClientHandlewrapper includes anactive_requestsdata structure to deduplicate concurrent requests, similar toRecursorPool. In the case ofMemoizeClientHandle, it never removes entries from its data structure, so it doubles as a cache with infinite TTL as well.MemoizeClientHandleis publicly exported, and otherwise only used in tests.Deduplication and caching features should be added to
DnssecClient, to bring it to parity with the recursor, and avoid wasted network traffic.@djc commented on GitHub (Jul 14, 2025):
I don't think
DnssecClientis a particularly important part of the stack right now? I'd hesitate to prioritize work on it unless that helps us modularize stuff in the resolver/recursor.@divergentdave commented on GitHub (Jul 14, 2025):
Yeah, I had just noticed it while looking at integration tests and wanted to get it written down.