diff --git a/go/buildstep/stale.go b/go/buildstep/stale.go index 0615346..4147934 100644 --- a/go/buildstep/stale.go +++ b/go/buildstep/stale.go @@ -47,6 +47,7 @@ func ScanOf(s stdio.KeptState) Scan { // isAsk says a step is a pulled ask's: its key is . and its tool is " ask" (a hand-started step // has the tool's name). An ask's key is the stream's to settle, never a restart's: the puller leaves an ask it was // running unacknowledged so the stream redelivers it, and the asker's wait takes the first end it reads on the key. +// Only once the asker's bound has passed (delivery.StepBound) is the key nobody's, and then it is ended. func isAsk(key string, s delivery.Step) bool { _, _, err := delivery.ParseAskStepKey(key) return err == nil && strings.HasSuffix(s.Tool, " ask") @@ -96,7 +97,9 @@ func endRunning(scan Scan, key string, step delivery.Step, revision uint64, why // EndStale ends this node's steps that are running and started before `before` (the start of this process) as failed // with RestartReason, and answers their ids. Only keys of node are read; a value that is no step is left alone. A step -// of a pulled ask is left to the stream's redelivery (isAsk), and a key written by another writer since it was read +// of a pulled ask is left to the stream's redelivery (isAsk) until its start is older than delivery.StepBound: its asker +// stopped waiting then, whether the stream gave it to another node or gave it up, and it is ended as failed, "past the +// step bound: its asker stopped waiting at