Judge the take-in's stall by keys settled with work to do, and clear its alarms after a restart (issue 1945, ADR 0544, review 2)
A refused key stays unacknowledged during its delay, so one waiting key on a quiet mesh raised take-in-stalled, cleared at the next ack and raised again. The watch now counts the keys the loop settled (acknowledged or refused, as the bus took them) and calls it a stall only with work to do, keys not delivered yet or a batch handed and not settled, and nothing settled for 5 minutes: a hung loop stays loud. Its first look always says what it found, so a stall raised before a restart is cleared once this controller moves. A consumer not made raises take-in-not-consumed under its own id per bucket, cleared when that consumer is made. Acks are synchronous, so only those the bus took count; on stop the iterator is drained and what it held, and a batch cut by the stop, are refused with no delay. Research 072: the take-ins on a bounded pull consumer.
This commit is contained in:
@@ -77,6 +77,13 @@ var plainWordings = map[string]func(conditions.Observation) words{
|
||||
"five minutes while builds wait. Until it moves, no new build reaches a machine; the details say how many wait.",
|
||||
Resolved: "new builds are being prepared again"}
|
||||
}),
|
||||
// A bucket of done keys whose take-in consumer could not be made (take_in_consumer.go, novox/hq ADR 0544 §6).
|
||||
kindTakeInNotConsumed: worded(func(o conditions.Observation) words {
|
||||
return words{Headline: "Some new builds are not being prepared",
|
||||
Explanation: "The mesh could not start reading one of the two places new builds are announced in, so the " +
|
||||
"builds announced there wait until the controller starts again. The details say which and why.",
|
||||
Resolved: "the mesh reads where new builds are announced again"}
|
||||
}),
|
||||
// Machines and their node-engine.
|
||||
"silent": worded(func(o conditions.Observation) words {
|
||||
m := machineOr(o, "a machine")
|
||||
|
||||
Reference in New Issue
Block a user