chore: add tracing to inbox, delivery, actor cache
All checks were successful
CI / fmt (push) Successful in 31s
CI / clippy (push) Successful in 4m0s
CI / test (push) Successful in 5m55s

This commit is contained in:
2026-07-11 10:39:43 +02:00
parent 6e1e1357fb
commit bb7db58848
4 changed files with 19 additions and 1 deletions

View File

@@ -6,6 +6,10 @@
- Actor cache TTL now treats `fetched_at: None` as always-stale instead of always-fresh. Consumers who never populated `fetched_at` were silently getting no cache invalidation. - Actor cache TTL now treats `fetched_at: None` as always-stale instead of always-fresh. Consumers who never populated `fetched_at` were silently getting no cache invalidation.
### Other improvements
- Structured tracing on key code paths: inbound activity dispatch (activity ID, source domain), outbound delivery (inbox count, retry attempts), actor cache lookups (hit/miss, staleness).
--- ---
## [0.4.3] — 2026-07-11 ## [0.4.3] — 2026-07-11

View File

@@ -35,10 +35,11 @@ pub(crate) async fn check_guards(
actor: &Url, actor: &Url,
data: &Data<FederationData>, data: &Data<FederationData>,
) -> Result<bool, Error> { ) -> Result<bool, Error> {
let domain = actor.host_str().unwrap_or("");
tracing::info!(activity_id = %id, source_domain = domain, "processing inbound activity");
if already_processed(id, data).await { if already_processed(id, data).await {
return Ok(true); return Ok(true);
} }
let domain = actor.host_str().unwrap_or("");
if data.blocklist_repo.is_domain_blocked(domain).await? { if data.blocklist_repo.is_domain_blocked(domain).await? {
tracing::info!(actor = %actor, "ignoring activity from blocked domain"); tracing::info!(actor = %actor, "ignoring activity from blocked domain");
return Ok(true); return Ok(true);

View File

@@ -16,6 +16,11 @@ pub(crate) async fn send_with_retry(
max_attempts: u32, max_attempts: u32,
initial_delay_secs: u64, initial_delay_secs: u64,
) -> Vec<anyhow::Error> { ) -> Vec<anyhow::Error> {
tracing::info!(
inbox_count = sends.len(),
max_attempts,
"starting outbound delivery"
);
let mut failures = vec![]; let mut failures = vec![];
for send in sends { for send in sends {
let mut delay = std::time::Duration::from_secs(initial_delay_secs); let mut delay = std::time::Duration::from_secs(initial_delay_secs);

View File

@@ -43,9 +43,17 @@ impl ActivityPubService {
tracing::debug!(actor_url, "fetched_at is None, treating as stale — consider populating fetched_at in get_remote_actor()"); tracing::debug!(actor_url, "fetched_at is None, treating as stale — consider populating fetched_at in get_remote_actor()");
false false
}); });
tracing::debug!(
actor_url,
cache_hit = true,
fresh = is_fresh,
"actor cache lookup"
);
if is_fresh { if is_fresh {
return Ok(cached); return Ok(cached);
} }
} else {
tracing::debug!(actor_url, cache_hit = false, "actor cache lookup");
} }
let url = match Url::parse(actor_url) { let url = match Url::parse(actor_url) {
Ok(u) => u, Ok(u) => u,