Run
This run was disrupted and finished anyway
1 side effect already performed was suppressed by the idempotency ledger, so the retry did not repeat work that had already happened. All of it is in the 18 events below.
What happened
The milestones of this run, in the order they were recorded. Each one is a real event; the full sequence is in the timeline below.
- Run started#6 23:31:07.030
RUN_STARTEDA worker picked up the first task in the run.
- Failure injected on purpose charge#13 23:31:07.047
FAULT_INJECTEDReLab degraded the real system here. This is the break, and everything after it is the recovery.
- Duplicate effect prevented charge#14 23:31:07.048
SIDE_EFFECT_SKIPPEDThe retry asked to perform an effect already recorded under the same key, so it was not performed a second time.
- Task running report#16 23:31:07.052
TASK_STARTEDThe handler began executing. Each attempt writes one of these.
- Task finished report#17 23:31:07.054
TASK_SUCCEEDEDThe handler returned without an error and the result was recorded.
- Workflow completed#18 23:31:07.054
RUN_SUCCEEDEDEvery task finished. This event is the run's last: a finished run's story cannot change.
What the journal proves
Every number above is a count of events in this run’s journal. Recovery is measured from the first fault, lease expiry, task failure or lost worker to the run completing, the same interval relab test asserts on.
Tasks
| Status | Task | Attempt | Worker | Error |
|---|---|---|---|---|
| SUCCEEDED | charge | 1/3 | 60026864 | · |
| SUCCEEDED | import | 1/3 | 60026864 | · |
| SUCCEEDED | report | 1/3 | 60026864 | · |
Timeline
The run’s complete recorded history, in sequence order. This is the same journal relab replay reduces. Filtering hides rows from this view; it never changes the sequence numbers, so a gap in them is still a gap.
| Seq | Time | What happened | Task | Worker | Technical detail |
|---|---|---|---|---|---|
| 13 | 23:31:07.047 | Failure injected on purposeFAULT_INJECTED | charge | · | fault_type=duplicate-deliveryReLab degraded the real system here. This is the break, and everything after it is the recovery.
{
"v": 1,
"draw": 0,
"seed": 31337,
"scenario": "duplicate-delivery-on-charge",
"fault_type": "duplicate-delivery",
"fault_point": "after-task-finish"
} |