Events
Each job appends one JSON line per event to events.jsonl in its directory, in order, with a sequence number, a timestamp, the job id, case, host and executor, and attributes that depend on the kind. The same events go to the instrumentation database, where job.submitted links to the tool call that made it.
wait_for with since_seq uses the sequence numbers to return at once when a transition already happened.
The kinds below are read from the code; a kind added there without a description here fails the docs build.
| Kind | When it is written |
|---|---|
figures.rendered | A figure set was written: views, files, anything skipped. |
job.cancel_abort_failed | cancel_job could not abort the queue task. The cancel marker still stops the job. |
job.cancelled | Terminal: cancel_job stopped it; the container is gone. |
job.deleted | delete_job removed the job directory. |
job.detached | The worker stopped while the job ran. Its step keeps running in the container. |
job.edited | set_end_time changed endTime while the job ran. |
job.failed | Terminal: a reason (exit, lost, exception, launch_failed), the step, and error_excerpt from the first fatal line of the log. |
job.finished | Terminal: every step done. Duration, iterations, final coefficients. |
job.host_free | The hold is over; carries how long it lasted. |
job.pruned | prune_job removed intermediate time levels or samples; carries what went and the space freed. |
job.reattached | A worker picked a running job back up after a restart. |
job.started | The worker took the job and its container is up; carries the queue wait. |
job.submitted | Written inside the submit call: steps, ranks, queue position. Links to that call in the instrumentation database. |
job.waiting_for_disk | Held because the jobs disk is under min_free_gb. |
job.waiting_for_host | Held because another job, or an OpenFOAM container the server did not start, occupies the host. |
job.waiting_for_maintenance | Held by a maintenance marker in the jobs directory; carries its reason. |
mesh.phase | snappyHexMesh moved to a new phase (castellating, snapping, layers), with the cell count. |
point.finished | A sweep point ended, with its window-mean coefficients. |
point.started | A sweep point began: alpha, beta, start iteration. |
point.write_now | Near a point's end the watcher asked the solver to write fields now, so the next point starts from them. |
solver.converged | The stop rule was met (the watcher lowered endTime), or the solver reported convergence itself. |
solver.progress | Every progress_every iterations: residuals, coefficients, drift, rate, ETA. |
step.finished | A step ended: exit code, duration, and what the parsers read from its log (cells, mesh quality, iterations). |
step.started | A step began: name, index, total. |
watcher.error | The watcher failed to sample. The job keeps running; the error is also in the step summary. |