Expand description
Reading one attempt’s volatile worker progress note, with typed absence. Reading the volatile worker progress note of one attempt — honestly.
A worker heartbeat may carry an opaque progress payload (“what I am doing
right now”). The server holds the most recent one per in-flight attempt in
HeartbeatTracker, in memory, and writes it nowhere. That makes the read
path a measurement problem rather than a lookup: the absence of a note has
two completely different causes, and collapsing them would tell an operator
that a busy worker has gone silent every time the server was restarted.
So the read returns AttemptProgress, which never says “no note” without
saying which kind of no:
AttemptProgress::Reported— the tracker holds a note for this attempt.AttemptProgress::NoneSent— the tracker holds the ATTEMPT and no note on it. This is a measurement: the worker really has reported nothing.AttemptProgress::Untracked— the tracker does not hold the attempt, so there is nothing to measure. A restart is the usual cause (the notes were in a process that no longer exists), and the other causes — the owner was swept off the tracker, or nothing has leased the dispatch — are equally unmeasurable from here. Every one of them is this variant; none of them is ever reported as silence.
Enums§
- Attempt
Progress - What this server process can say about one attempt’s progress note.
Functions§
- attempt_
progress - The progress note this process holds for
(workflow, activity, attempt).