chore: add tracing to inbox, delivery, actor cache
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user