Conversation
86667
reviewed
Mar 9, 2026
| /// | ||
| /// Reset the last_table_refresh timer. | ||
| fn resolve_pending_bootstrap(&mut self) { | ||
| if let Some(hostnames) = self.unresolved_bootstrap.take() { |
There was a problem hiding this comment.
take() means this only runs once. Is there a scenario in which we may want to retry? i think maybe and not costly to clone instead
86667
approved these changes
Mar 9, 2026
86667
left a comment
There was a problem hiding this comment.
Looks good apart from lack of retry, i guess this is not a regression on existing behaviour though
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Dht::new()spawns an actor thread that runsRpc::new(), then blocks waiting for it to signal ready. When no custom bootstrap nodes are configured,Rpc::new()synchronously resolves the 4 default bootstrap hostnames viato_socket_addrs(). On systems with slow DNS this can take several seconds, stalling the caller ofDht::new().The fix stores the default bootstrap hostnames unresolved during
Rpc::new()and defers DNS resolution to the firsttick()call inpopulate(). Sincetick()runs on the actor thread after signaling ready,Dht::new()now returns as fast as the UDP socket can bind. Pre-resolved bootstrap nodes passed viaDhtBuilder::bootstrap()are unaffected.Fixes pubky/pkarr#219