ReLab

Break it. Watch it recover.

← all runs

Run

Status
SUCCEEDED
Workflow
data-pipeline v1
Run id
bb06d758-2500-4193-81ca-51fcbf0a51da
Seed
42
Scenario
worker-crash-during-analyze
Duration
2.28s

This run was disrupted and finished anyway

1 worker holding work for this run went away. 1 lease expired and the work came back through the reaper. All of it is in the 26 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.

  1. Run started#6 23:31:07.106
    RUN_STARTED

    A worker picked up the first task in the run.

  2. Failure injected on purpose analyze#15 23:31:07.513
    FAULT_INJECTED

    ReLab degraded the real system here. This is the break, and everything after it is the recovery.

  3. Worker declared gone#16 23:31:09.086
    WORKER_LOST

    The holder of this run's task is gone and its leases are released. Usually that is five missed heartbeats; a worker that shuts down deliberately while holding work writes the same event, because what the run experienced is the same either way.

  4. Worker stopped responding analyze#17 23:31:09.285
    TASK_LEASE_EXPIRED

    Nobody renewed the hold on this task, so another process concluded the holder is gone. This is the mechanism that also works when a machine loses power.

  5. Task returned to the queue analyze#18 23:31:09.285
    TASK_REQUEUED

    The work a vanished worker was holding became claimable again.

  6. Task running analyze#20 23:31:09.327
    TASK_STARTED

    The handler began executing. Each attempt writes one of these.

  7. Task finished analyze#21 23:31:09.329
    TASK_SUCCEEDED

    The handler returned without an error and the result was recorded.

  8. Workflow completed#26 23:31:09.360
    RUN_SUCCEEDED

    Every task finished. This event is the run's last: a finished run's story cannot change.

What the journal proves

5
Attempts
3
Workers involved
1
Faults injected
1
Leases expired
1
Tasks requeued
0
Retries scheduled
1
Workers lost
0
Effects suppressed
0
Dead-lettered
1.85s
Recovery

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

Each task in the run, with the attempt it reached and the worker that last held it.
StatusTaskAttemptWorkerError
SUCCEEDEDanalyze2/3423bf373·
SUCCEEDEDimport1/36f14b10a·
SUCCEEDEDreport1/363a9b177·
SUCCEEDEDvalidate1/3423bf373·

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.

No effect events in this run. That is a fact about the run, not a missing page: nothing of that kind was recorded.

RECORDINGfive real runs exported from real PostgreSQL by scripts/record-demo.sh, crashes delivered by SIGKILLrelab 241c136-dirty, recorded