You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
hickory-resolver 0.26 (bumped in #581) changed ResolverConfig::default() to an empty config with no nameservers, so all /dns/... bootnode and telemetry dials fail silently with NoConnections (0 peers). Use the system DNS config instead; startup now fails loudly if it can't be read.
Verified the root cause against both resolver versions in Cargo.lock:
hickory-resolver 0.24.4: impl Default for ResolverConfig explicitly returned Google's nameservers (8.8.8.8, 8.8.4.4, …).
hickory-resolver 0.26.1: ResolverConfig is #[derive(Default)], so Default::default() has an emptyname_servers list.
The vendored litep2p builds its resolver from Default::default() unless use_system_dns_config is set, so after #581 every /dns/... lookup had zero nameservers to query. Enabling with_system_resolver() here is the right fix.
Correctness checks:
Litep2p::new calls hickory_resolver::system_conf::read_system_conf() and propagates failure as Error::CannotReadSystemDnsConfig — startup fails loudly as described.
The resolver is built once and shared by both the TCP and WebSocket transports, so both dial paths are covered.
hickory's system-config feature is in its default feature set (unix resolv.conf, windows ipconfig).
This is the only production Litep2pConfigBuilder call site; the rest are tests using IP listen addresses.
Telemetry claim in the description is likely inaccurate: telemetry goes through sc-telemetry → libp2p-dns, which pins hickory-resolver 0.24.4 and never touches litep2p's resolver, so telemetry dials are unaffected by this change.
Ops/release-notes note: nodes in minimal containers without /etc/resolv.conf previously worked via the implicit Google DNS fallback (pre-Update rusty crystals #581) but will now fail at startup with CannotReadSystemDnsConfig even when no DNS multiaddrs are configured. Intended fail-loud trade-off, worth a mention in the v0.7.0 release notes.
The one-line change in client/network/src/litep2p/mod.rs correctly enables with_system_resolver(). In client/litep2p/src/lib.rs, that flag makes startup read the system DNS config and propagate CannotReadSystemDnsConfig on read/build failure, so the PR matches its “fail loudly” intent.
Verified with:
cargo check -p sc-network
Residual risk: I did not run an end-to-end node boot/dial test with /dns/... bootnodes, so runtime DNS behavior is still worth smoke-testing in the target deployment environment. I did not post anything to GitHub.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
hickory-resolver 0.26 (bumped in #581) changed
ResolverConfig::default()to an empty config with no nameservers, so all/dns/...bootnode and telemetry dials fail silently withNoConnections(0 peers). Use the system DNS config instead; startup now fails loudly if it can't be read.