Der 06:00-Job rollt bei einer fehlenden Baseline den ganzen Tag zurück #23
Labels
No labels
Kind
Bug
Kind
Enhancement
Kind
Maintenance
Priority
P1
Priority
P2
Priority
P3
Status
In Progress
Status
Need More Info
Status
Zur Abnahme
Änderungen Wettspielreglement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sffs-tt-basel/sffs-tt-issues#23
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Was passiert: Der Job um 06:00 (
CaptainReminderService.run,backend/…/service/CaptainReminderService.java:76) verschickt Erinnerungen, bestätigt Resultate automatisch und rechnet am Ende die Elo der Saison neu – alles in einer Transaktion.Seit jede Baseline erst ab ihrem Datum gilt (Plan Elo-Baselines), kann die Neuberechnung berechtigt mit 409 scheitern: ein Spieler hat eine Partie vor seiner Erstmeldung. Dann werden alle Erinnerungen und Auto-Bestätigungen des Tages zurückgerollt – und am nächsten Morgen wieder, bis jemand die Baseline nachträgt. Sichtbar ist davon nichts, ausser dass nichts passiert.
Vorschlag: die Elo je Saison in einer eigenen Transaktion rechnen und die 409 ins Log schreiben – oder die Auto-Bestätigung ganz vom Rechnen trennen.
Herkunft: Review des Branches Elo-Baselines (e8, Befund I5), 29.09.2026.
Am Code nachgeprüft (20.10.): Die fehlende Baseline ist nur ein Auslöser. Die Ursache liegt in der Bauweise.
runhält alle Begegnungen, die Auto-Bestätigungen und die Elo-Rechnung in einer Transaktion, und die Erinnerungsmails gehen mitten darin raus. Jede Ausnahme rollt darum den ganzen Tag zurück, und weil die Protokolleinträge mit zurückgerollt werden, gehen die schon verschickten Erinnerungen am nächsten Morgen doppelt raus.Das Mail-Muster betrifft alle 12 Versandstellen, nicht nur den Job, und steht darum in #122. #23 baut darauf auf: je Begegnung eine eigene Transaktion, Erinnerungen über den Versand nach dem Commit. Offen bleibt die Entscheidung, was eine fällige Auto-Bestätigung tut, wenn die Elo nicht rechnet: (A) gleiche Regel wie beim Bestätigen von Hand, die Begegnung bleibt eingereicht, oder (B) bestätigen und die Elo später rechnen.