Skip to content

Add adaptive pacing and flexible resolver selection - #10

Merged
ialexsilva merged 1 commit into
mainfrom
feat/resolver-selection-and-pacing
Jul 27, 2026
Merged

ialexsilva merged 1 commit into
mainfrom
feat/resolver-selection-and-pacing

Conversation

@ialexsilva

Copy link
Copy Markdown
Owner

Summary

  • Add repeatable --server endpoints for one-off resolver comparisons and let an explicitly selected system DNS resolver remain as a baseline when encrypted protocol filters are used.
  • Make the default launch pace adapt conservatively to evidence of shared-path congestion, while keeping an explicitly configured --pace fixed.
  • Harden resolver ID handling and retry cancellation so sessions, statistics, and partial reports remain accurate.
  • Update the application version to 0.7.0 and document the new selection and pacing behavior.

Resolver selection

  • Accept temporary UDP, DoT, DoH, DoH/3, and DoQ endpoints without writing them to the user configuration.
  • Preserve the explicitly selected system DNS resolver when --protocols excludes UDP, allowing comparisons such as --system --builtin --protocols doh3,doq.
  • Assign deterministic unique IDs when distinct endpoints would otherwise generate the same identifier.

Adaptive pacing

  • Treat --concurrency strictly as the in-flight query limit.
  • Keep the default 20 ms launch interval adaptive, backing off only when timeout evidence spans multiple independent resolver groups.
  • Recover gradually after clean traffic and retain pacing adjustments in events and JSON reports.
  • Keep an explicitly supplied --pace fixed and disable adaptive jitter for that mode.

Reliability

  • Apply admission control consistently to triage, benchmark attempts, and retries.
  • Preserve the last real query result when cancellation prevents a retry from starting.
  • Keep persistent sessions isolated by resolver ID and avoid fabricated answered samples in interrupted reports.

Testing

  • go test ./...
  • go vet ./...
  • go test -race ./internal/bench ./internal/serverlist ./cmd/dnsbench

@ialexsilva
ialexsilva merged commit 37ee9c7 into main Jul 27, 2026
1 check passed
@ialexsilva
ialexsilva deleted the feat/resolver-selection-and-pacing branch August 17, 2026 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant