You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Parse Sentry session and sessions envelope items to track release health — crash rates, error rates per release and environment.
Context
Sentry Rust SDK automatically sends session data via the release-health feature (enabled by default). In request mode (default for web servers), sessions are aggregated and batched every 60s by a background thread (sentry-session-flusher). Each flush produces a sessions envelope item containing aggregated counts.
Goal
Parse Sentry
sessionandsessionsenvelope items to track release health — crash rates, error rates per release and environment.Context
Sentry Rust SDK automatically sends session data via the
release-healthfeature (enabled by default). In request mode (default for web servers), sessions are aggregated and batched every 60s by a background thread (sentry-session-flusher). Each flush produces asessionsenvelope item containing aggregated counts.There are two envelope item types to handle:
session— Individual session update (app mode)sessions— Aggregated session counts (request mode)Session Payload (individual)
{ "sid": "uuid", "did": "user-123", "init": true, "started": "2026-06-26T10:00:00Z", "duration": 323.5, "status": "exited", "errors": 2, "attrs": { "release": "rungu@0.2.0", "environment": "production" } }Session Aggregates Payload (request mode)
{ "attrs": { "release": "rungu@0.2.0", "environment": "production" }, "aggregates": [ { "started": "2026-06-26T10:00:00Z", "did": null, "exited": 150, "errored": 5, "abnormal": 0, "crashed": 1 } ] }Tasks
2a.
trapfall-proto— Wire typesSessionStatusenum:ok,exited,crashed,abnormalSessionAttributesstruct:release,environment,ip_address,user_agentSessionUpdatestruct:session_id,distinct_id,init,started,duration,status,errors,attributesSessionAggregateItemstruct:started,distinct_id,exited,errored,abnormal,crashedSessionAggregatesstruct:aggregates: Vec<SessionAggregateItem>,attributesParsedEnvelopewithsession_updates: Vec<SessionUpdate>,session_aggregates: Vec<SessionAggregates>2b.
trapfall-ingest— Parserif item_type == "session" { parse SessionUpdate }if item_type == "sessions" { parse SessionAggregates }2c.
trapfall-db— Schema + queriesrelease_healthtable (aggregated counters)session_updatestable for raw individual sessionsget_crash_rate(release, env, window),list_release_health(project_id)2d. Dashboard — Release Health UI
crashed / (exited + errored + abnormal + crashed)× 100%SDK Client Effort
Zero code changes needed in Rungu/CIRA — just ensure
releaseis set inClientOptions:Dependencies
ParsedEnvelopereturn type)Effort
~1-2 days
Sub-issues: