From d96c86cfeef342d17cc88e1cb3cc75bdf060339e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 9 May 2026 21:42:48 +0300 Subject: more on this --- internal/service/gc.go | 5 ++++- internal/service/podcast.go | 1 + internal/service/scan.go | 7 ++++++- 3 files changed, 11 insertions(+), 2 deletions(-) (limited to 'internal/service') diff --git a/internal/service/gc.go b/internal/service/gc.go index 8ff3204..f7ea396 100644 --- a/internal/service/gc.go +++ b/internal/service/gc.go @@ -70,7 +70,10 @@ func (w *GCWorker) Start() { for { select { case <-tickCh: - w.run(w.ctx) + func() { + defer recoverWorkerPanic(w.logger, "gc") + w.run(w.ctx) + }() w.notifyRunDone() case <-w.stopCh: return diff --git a/internal/service/podcast.go b/internal/service/podcast.go index ad5e22b..269df68 100644 --- a/internal/service/podcast.go +++ b/internal/service/podcast.go @@ -656,6 +656,7 @@ func (s *podcastService) CheckFeeds(ctx context.Context) error { wg.Add(1) go func(f model.PodcastFeed) { defer wg.Done() + defer recoverWorkerPanic(s.logger, "podcast feed check") if err := s.checkFeed(ctx, f); err != nil { s.logger.Warn("podcast feed check failed", "feed_id", f.ID, "feed_url", f.FeedURL, "err", err) } else { diff --git a/internal/service/scan.go b/internal/service/scan.go index d2cc5bb..1bd7fda 100644 --- a/internal/service/scan.go +++ b/internal/service/scan.go @@ -59,6 +59,12 @@ func (s *scanService) TriggerRescan(ctx context.Context) error { go func() { defer cancel() + defer s.notifyDone() + defer func() { + if err := recoverWorkerPanic(s.logger, "rescan"); err != nil { + progress.Done(err) + } + }() err := s.scanner.Scan(scanCtx, s.mediaRoot, progress) if err == nil { err = scanCtx.Err() @@ -70,7 +76,6 @@ func (s *scanService) TriggerRescan(ctx context.Context) error { progress.Done(nil) s.logger.Info("rescan completed") } - s.notifyDone() }() return nil } -- cgit v1.2.3