Files
synapse/rust
Erik JohnstonandClaude Opus 5.5 a7ffaa582a Trace Rust state resolution, event loads and HTTP requests
- `state.resolve` around a state resolution on the database, tagged
  `room_id`, `state_sets` and, once done, the resolution's database and
  auth chain time. It covers the handler's resolutions and the
  persister's, under `persist.state_res`. A room without a chain cover
  index is tagged `fallback`, not an error: the caller resolves its
  state in Python.
- `events.load` around an event load, tagged with the number of events
  asked for, `reload`, and on success how many this load read from the
  database (`fetched`) and how many it did not (`cached`, which counts
  events another load was already reading). Its `db.*` spans nest
  under it.
- `outgoing-client-request` around a request of the Rust HTTP client
  (MAS introspection), with the tags Python's `SimpleHttpClient` span
  has: `span.kind`, `http.method`, `http.url` (without credentials or
  query) and `http.status_code`. As in Python, an error status is the
  caller's to judge, so only a failure to get a response is marked as
  an error, before the conversion to a Python exception.

A trial test loads an uncached event with tracing on and checks that
`events.load` is under the caller's Python span, with the event fetched
and its reads under it. Rust tests check `state.resolve` on a failed
resolution and the HTTP client span against a local server.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W4zxygfJC93SsugxskhoJG
2026-10-19 11:26:04 +00:00
..