From 2622fa3089d1df249276083d157e43b080a59100 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 23 Feb 2026 23:52:13 +0900 Subject: feat(tracing): instrument network requests with tracing spans Add #[tracing::instrument] and debug logs to all HTTP-calling functions in mozart-registry and mozart-vcs for request-level observability (URL, status code, cache hits, download size). Co-Authored-By: Claude Opus 4.6 --- crates/mozart-vcs/src/driver/bitbucket.rs | 4 ++++ crates/mozart-vcs/src/driver/forgejo.rs | 3 +++ crates/mozart-vcs/src/driver/github.rs | 4 ++++ crates/mozart-vcs/src/driver/gitlab.rs | 3 +++ 4 files changed, 14 insertions(+) (limited to 'crates/mozart-vcs/src/driver') diff --git a/crates/mozart-vcs/src/driver/bitbucket.rs b/crates/mozart-vcs/src/driver/bitbucket.rs index dc7d2cf..d47987d 100644 --- a/crates/mozart-vcs/src/driver/bitbucket.rs +++ b/crates/mozart-vcs/src/driver/bitbucket.rs @@ -62,6 +62,7 @@ impl BitbucketDriver { ) } + #[tracing::instrument(skip(self))] async fn api_get(&self, path: &str) -> Result { let url = self.api_url(path); let mut req = self @@ -76,6 +77,7 @@ impl BitbucketDriver { } let response = req.send().await?; + tracing::debug!(status = %response.status(), %url, "Bitbucket API response"); if !response.status().is_success() { bail!( "Bitbucket API request to {} failed: {}", @@ -86,6 +88,7 @@ impl BitbucketDriver { Ok(response.json().await?) } + #[tracing::instrument(skip(self))] async fn api_get_paginated(&self, path: &str) -> Result> { let mut items = Vec::new(); let mut next_url = Some(self.api_url(path)); @@ -101,6 +104,7 @@ impl BitbucketDriver { req = req.header(AUTHORIZATION, format!("Basic {key}:{secret}")); } let response = req.send().await?; + tracing::debug!(status = %response.status(), %url, "Bitbucket API paginated response"); if !response.status().is_success() { break; } diff --git a/crates/mozart-vcs/src/driver/forgejo.rs b/crates/mozart-vcs/src/driver/forgejo.rs index 0447422..ec2ca14 100644 --- a/crates/mozart-vcs/src/driver/forgejo.rs +++ b/crates/mozart-vcs/src/driver/forgejo.rs @@ -76,6 +76,7 @@ impl ForgejoDriver { ) } + #[tracing::instrument(skip(self))] async fn api_get(&self, path: &str) -> Result { let url = self.api_url(path); let mut req = self @@ -87,6 +88,7 @@ impl ForgejoDriver { req = req.header(AUTHORIZATION, format!("token {token}")); } let response = req.send().await?; + tracing::debug!(status = %response.status(), %url, "Forgejo API response"); if !response.status().is_success() { bail!( "Forgejo API request to {} failed: {}", @@ -97,6 +99,7 @@ impl ForgejoDriver { Ok(response.json().await?) } + #[tracing::instrument(skip(self))] async fn api_get_paginated(&self, path: &str) -> Result> { let mut items = Vec::new(); let mut page = 1; diff --git a/crates/mozart-vcs/src/driver/github.rs b/crates/mozart-vcs/src/driver/github.rs index 724cb35..c47c2fe 100644 --- a/crates/mozart-vcs/src/driver/github.rs +++ b/crates/mozart-vcs/src/driver/github.rs @@ -65,6 +65,7 @@ impl GitHubDriver { ) } + #[tracing::instrument(skip(self))] async fn api_get(&self, path: &str) -> Result { let url = self.api_url(path); let mut req = self @@ -78,6 +79,7 @@ impl GitHubDriver { } let response = req.send().await?; + tracing::debug!(status = %response.status(), %url, "GitHub API response"); if !response.status().is_success() { bail!( "GitHub API request to {} failed with status {}", @@ -88,6 +90,7 @@ impl GitHubDriver { Ok(response.json().await?) } + #[tracing::instrument(skip(self))] async fn api_get_paginated(&self, path: &str) -> Result> { let mut items = Vec::new(); let mut page = 1; @@ -107,6 +110,7 @@ impl GitHubDriver { } let response = req.send().await?; + tracing::debug!(status = %response.status(), %url, "GitHub API paginated response"); if !response.status().is_success() { bail!("GitHub API paginated request failed: {}", response.status()); } diff --git a/crates/mozart-vcs/src/driver/gitlab.rs b/crates/mozart-vcs/src/driver/gitlab.rs index 7b1a93b..f96c078 100644 --- a/crates/mozart-vcs/src/driver/gitlab.rs +++ b/crates/mozart-vcs/src/driver/gitlab.rs @@ -80,6 +80,7 @@ impl GitLabDriver { ) } + #[tracing::instrument(skip(self))] async fn api_get(&self, path: &str) -> Result { let url = self.api_url(path); let mut req = self @@ -93,6 +94,7 @@ impl GitLabDriver { } let response = req.send().await?; + tracing::debug!(status = %response.status(), %url, "GitLab API response"); if !response.status().is_success() { bail!( "GitLab API request to {} failed with status {}", @@ -103,6 +105,7 @@ impl GitLabDriver { Ok(response.json().await?) } + #[tracing::instrument(skip(self))] async fn api_get_paginated(&self, path: &str) -> Result> { let mut items = Vec::new(); let mut page = 1; -- cgit v1.3.1