Axis 07 · Liveness: Does it eventually finish?
Every request eventually gets an answer. Not "within a minute", just "at some point". The bug is the endless spinner: something was started and never finished.
A confirmed order was never shipped (and never cancelled). Nothing crashed. Nothing was reported. The order just stayed confirmed forever.
Temporal<FulfilmentEvent>.Eventually(
_ => "order",
e => e is FulfilmentEvent.Confirmed,
e => e is FulfilmentEvent.Shipped or FulfilmentEvent.Cancelled)
- which things to track
- what starts it
- what ends it
It runs the same random calls on the virtual clock, lets the run settle, and then checks that everything that was started has ended. Liveness can only be judged at the end of a run, which is why it is a separate question from a deadline.
Liveness failed.
Rule broken every-confirmed-order-ships Noticed at +0s What happened 1 instance(s) never reached the target event: order Events recorded +0s Confirmed Calls made wait 4s, Confirm
Law What must eventually happen does, once a run has settled. Consequence Something that was started never finishes: an endless spinner, a build that never reports an end.
Smallest case found, after 1 shrink. To run this case again: .Seed("9-RUpSdWxJb3")
How to read this:
- What happened says what never ended:
1 instance(s) never reached the target event. - Events recorded shows a confirmation and nothing after it.
A failure of omission leaves nothing to look at. No error, no log line. Only a rule that says "this must end" notices.
In docs-builder, every started validation build must end in "complete" or "cancelled", however many findings it makes on the way.
Previous: 06 Temporal · Next: 08 Confluence · All nine axes