fix(tracing): capture request paths for unmatched routes
Build and Push Docker Container / build-and-push (push) Successful in 4m43s

- Record url.path before routing so 404s and early responses retain their path.
- Keep matched route templates as span names to limit cardinality.
- Exclude query strings, full URLs, cookies and authorization headers.
- Test decoded paths on 404 responses and path attributes on matched routes.
- Document that paths may expose filenames, IDs or share tokens.
- Validate NanoShare with 294 passing tests.
This commit is contained in:
2026-10-31 18:15:47 +01:00
parent bc44273155
commit aec9d2e317
3 changed files with 39 additions and 6 deletions
+5 -2
View File
@@ -44,8 +44,11 @@ worker/thread boundaries, propagates W3C context, and sends native
`convex-request-id: otel-<trace-id>-<span-id>` headers without changing function
arguments. Retries get distinct span/request IDs.
Spans do **not** capture payloads, query strings, raw URLs, cookies, credentials,
or exception text. WebSockets and ASGI lifespan messages pass through unchanged.
HTTP spans include `url.path` for every request, including unmatched 404s.
Paths can contain filenames, IDs or share tokens; treat stored traces accordingly.
Span names still use route templates when available to avoid high cardinality.
Spans do **not** capture payloads, query strings, full URLs, cookies, authorization
headers or exception text. WebSockets and ASGI lifespan messages pass through unchanged.
This integration exports **traces only**, not OTel metrics or logs; existing
wide-event logging remains independent. The SDK shuts down its exporter off the
event loop during application shutdown. Configure the collector/network outside