diff --git a/crates/contracts/src/profession_shared.rs b/crates/contracts/src/profession_shared.rs index 75d7b7e..2d3ceaf 100644 --- a/crates/contracts/src/profession_shared.rs +++ b/crates/contracts/src/profession_shared.rs @@ -887,7 +887,10 @@ async fn upload_document( { Ok(url) => url, Err(e) => { - tracing::error!("B2 upload failed: {}", e); + // {:?} on an anyhow::Error prints the full context chain, not just + // the outermost ".context()" message — that's what actually names + // the root cause (auth, DNS, timeout, etc.). + tracing::error!("B2 upload failed: {:?}", e); return (StatusCode::INTERNAL_SERVER_ERROR, Json(serde_json::json!({ "error": "File upload failed" }))).into_response(); } };