Skip to main content

Sagas

Live saga instances — one row per active saga, with Type, Correlation key, Updated and Created, and a search box over the correlation key. Three tiles above show live sagas, started today, and completed today.

The nav entry is hidden unless opt.AddSagas() is registered.

Only live sagas appear​

Warp deletes the row when a saga completes (MarkCompleted() removes it in the same SaveChanges). So this page is a list of in-flight sagas, not a history — an empty page means everything finished, not that nothing ran. It also means a correlation key is immediately reusable after completion.

If you need history, the counters warp.sagas.started / completed / requeued carry it.

Detail page​

A saga's detail shows its correlation key, current state, version, and an activity log of every message that was handled against it — capped at the 200 most recent invocations, with a truncation flag when there were more.

Force complete is the escape hatch for a saga wedged waiting on a message that will never arrive. It takes the saga's mutex and emits a structured audit log line, so the intervention is traceable afterwards. It deletes the row like a normal completion — any timeout message that lands later is silently dropped.

Correlation keys and PII​

A correlation key is visible on this page and in logs. SagaPiiCheck blocks [Correlate] properties whose names look like PII (Email, Phone, SSN and similar) at registration time, so a saga keyed on a raw email address fails fast rather than quietly publishing addresses to the dashboard. If the value is genuinely anonymised, opt out with [Correlate(IsAnonymized = true)].

See also​

  • Sagas — defining a saga, correlation, timeouts, concurrency and storage.