fix(PROJ-86): stale sync_running-Flag beim Scheduler-Start automatisch bereinigen

Ein IMAP-Konto blieb wegen sync_running=true seit 2026-07-05 (Prozess-Crash
vor dem defer in runSyncWithRetry) für den Scheduler auf ewig "beschäftigt" -
checkAccounts überspringt Konten mit SyncRunning=true. Neue Store-Methode
ClearStaleSyncRunning() wird jetzt bei jedem Scheduler.Start() aufgerufen und
setzt verwaiste Flags zurück, bevor der Scheduler-Loop startet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UPFC6Jk2ke1Pq9XcuVGP1R
This commit is contained in:
sysops
2026-09-01 13:56:48 +02:00
co-authored by Claude Sonnet 5
parent 25865423f9
commit e1f39ce56f
2 changed files with 21 additions and 0 deletions
+6
View File
@@ -81,6 +81,12 @@ func (s *Scheduler) SetAuditLogger(a *audit.Logger) {
// Start launches the background scheduler goroutine.
// Call Stop to shut it down gracefully.
func (s *Scheduler) Start() {
if n, err := s.store.ClearStaleSyncRunning(context.Background()); err != nil {
s.logger.Error("imap scheduler: clear stale sync_running failed", "err", err)
} else if n > 0 {
s.logger.Warn("imap scheduler: cleared stale sync_running flags left over from a prior crash/kill", "accounts", n)
}
ctx, cancel := context.WithCancel(context.Background())
s.cancel = cancel