History & runs
Every execution in DataRunner — scheduled, manual, watch-triggered, or fired from the API — is recorded as a run. History is where you answer "did it go out, and what did it say".
- Read
- 4 min
- Module
- History
What a run records
A run is the audit trail of one execution. It survives the thing that caused it — if you delete a schedule, its past runs stay, because the question “what did we send that customer in March” outlives the schedule that sent it.
Run logs
Beyond the run record, each execution writes a log: connection acquired, query submitted, rows fetched, each delivery route attempted and its outcome. Delivery is logged per route, so a report that reached Slack but failed to reach S3 shows exactly that instead of a single ambiguous “failed”.
Finding a run
History filters by status, connection, query, schedule, and date range. The common starting point is status = failed over the last 24 hours, which answers “is anything broken right now” in one click.
| Status | Meaning |
|---|---|
| Queued | Created and waiting for a worker to pick it up |
| Running | Claimed by a worker and executing now |
| Succeeded | Query completed; check the delivery log for per-route outcomes |
| Failed | Query failed — the database error is on the run |
| Cancelled | Stopped before completion |
Retention
Runs, results, and logs are retained independently, because they cost very different amounts to keep. Result sets are the expensive part; the run record is cheap and is what you usually need months later.