[PR #3314] [MERGED] resolver: add optional metrics feature, opp. enc. probe metrics #3736

Closed
opened 2026-03-16 11:59:57 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/hickory-dns/hickory-dns/pull/3314
Author: @cpu
Created: 10/16/2025
Status: Merged
Merged: 10/21/2025
Merged by: @cpu

Base: mainHead: cpu-9539-metrics_dev


📝 Commits (1)

  • 014410d resolver: add optional metrics feature, probe metrics

📊 Changes

4 files changed (+603 additions, -19 deletions)

View changed files

📝 Cargo.lock (+2 -0)
📝 bin/Cargo.toml (+1 -1)
📝 crates/resolver/Cargo.toml (+4 -0)
📝 crates/resolver/src/name_server/name_server.rs (+596 -18)

📄 Description

This branch adds an optional metrics feature to the resolver crate, populating it based on the higher-level hickory-dns binary's metrics flag.

Additionally, it instruments the behaviour of the opportunistic encryption probing added in https://github.com/hickory-dns/hickory-dns/pull/3276 to expose metrics. It maintains counters for attempts, timeouts, errors, and successes, and a gauge for the current probe budget value. Initially I considered a histogram for the overall per-probe elapsed duration, but there are no other histogram metrics and adding the first one requires addressing some challenges (see this comment thread).

Testing is a little bit complicated because of the way probe requests are spawned as anonymous background tasks. In this branch we update the test mocking to run the probe requests synchronously so that we can easily write tests that know when the probe has completed to assert on metric updates that were observed. Similarly, since the metrics crate's with_local_recorder() applies only to the current thread, we need to use a new_current_thread() tokio Runtime to make sure the background task and the test are both using the same DebuggingRecorder.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/hickory-dns/hickory-dns/pull/3314 **Author:** [@cpu](https://github.com/cpu) **Created:** 10/16/2025 **Status:** ✅ Merged **Merged:** 10/21/2025 **Merged by:** [@cpu](https://github.com/cpu) **Base:** `main` ← **Head:** `cpu-9539-metrics_dev` --- ### 📝 Commits (1) - [`014410d`](https://github.com/hickory-dns/hickory-dns/commit/014410d14f02ceae6e509279bf528f2f2caf3ebd) resolver: add optional metrics feature, probe metrics ### 📊 Changes **4 files changed** (+603 additions, -19 deletions) <details> <summary>View changed files</summary> 📝 `Cargo.lock` (+2 -0) 📝 `bin/Cargo.toml` (+1 -1) 📝 `crates/resolver/Cargo.toml` (+4 -0) 📝 `crates/resolver/src/name_server/name_server.rs` (+596 -18) </details> ### 📄 Description This branch adds an optional metrics feature to the resolver crate, populating it based on the higher-level hickory-dns binary's metrics flag. Additionally, it instruments the behaviour of the opportunistic encryption probing added in https://github.com/hickory-dns/hickory-dns/pull/3276 to expose metrics. It maintains counters for attempts, timeouts, errors, and successes, and a gauge for the current probe budget value. Initially I considered a histogram for the overall per-probe elapsed duration, but there are no other histogram metrics and adding the first one requires addressing some challenges ([see this comment thread](https://github.com/hickory-dns/hickory-dns/pull/3314#discussion_r2437307499)). Testing is a little bit complicated because of the way probe requests are spawned as anonymous background tasks. In this branch we update the test mocking to run the probe requests synchronously so that we can easily write tests that know when the probe has completed to assert on metric updates that were observed. Similarly, since the metrics crate's `with_local_recorder()` applies only to the current thread, we need to use a `new_current_thread()` tokio `Runtime` to make sure the background task and the test are both using the same `DebuggingRecorder`. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-16 11:59:57 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/hickory-dns#3736
No description provided.