fix(queue): fertige Ansagen nicht mehr als „abgebrochen" protokollieren

Der Worker rief cancel() auf seinem eigenen Kontext, BEVOR er ctx.Err()
prüfte — damit war jede normal beendete Ansage im Protokoll „abgebrochen",
auch bei Erfolg. Der Abbruch wird jetzt vor dem eigenen cancel() abgelesen.
Regressionstest: fertig heißt „fertig nach", ein echter Cancel heißt
„abgebrochen".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
m3ta-chironandClaude Fable 5.1 committed 2026-10-24 09:50:08 +02:00
1 parent bc26a73aeb
commit 79314dfb0f
2 files changed
+60 -1

No files matched your search

+4 -1
View File
@@ -317,6 +317,9 @@ func (q *Queue) loop() {
start := time.Now()
err := q.speak(ctx, item)
dur := time.Since(start)
// Abbruch VOR dem eigenen cancel() ablesen — danach wäre ctx.Err()
// immer gesetzt und jede fertige Ansage hieße „abgebrochen".
cancelled := ctx.Err() != nil
cancel()
q.mu.Lock()
@@ -325,7 +328,7 @@ func (q *Queue) loop() {
q.mu.Unlock()
switch {
case ctx.Err() != nil:
case cancelled:
q.logf("queue: ansage %s abgebrochen", item.ID)
case err != nil:
q.logf("queue: ansage %s fehlgeschlagen nach %s: %v", item.ID, dur.Round(time.Millisecond), err)