Count only the controller's own consumers in the deaf look, not the check workers a builder holds (issue 1063)

This commit is contained in:
2026-10-20 23:14:45 +00:00
parent f4584e6fa2
commit 233db89f29
3 changed files with 116 additions and 9 deletions
+9 -2
View File
@@ -498,7 +498,14 @@ const EventsStream = "EVENTS"
// held through a store restart — the exact message the stream exists to protect — some minutes
// before the controller had finished deciding about it.
func MeshConsumers() []Consumer {
return append([]Consumer{
return append(ControllerConsumers(), CheckWorkers()...)
}
// ControllerConsumers are the consumers the controller's own event loop takes from: MeshConsumers without the build
// seat's check workers, which the builders take from and the loop never does (issue 1063). A consumer added to the
// controller is counted here without a change elsewhere.
func ControllerConsumers() []Consumer {
return []Consumer{
{
Name: ControllerName,
Stream: "CONTROL",
@@ -558,7 +565,7 @@ func MeshConsumers() []Consumer {
Why: "the controller copies each message a consumer gave up on into DEAD_LETTERS; no max-deliver, " +
"because a notice it gave up on would lose the message it is about",
},
}, CheckWorkers()...)
}
}
// NoticesConsumer is the controller's consumer on DEAD_LETTER_NOTICES (novox/hq issue 330).