From 856bdd13213616723d7be851052b89f29c224c86 Mon Sep 17 00:00:00 2001 From: Leander Beernaert Date: Fri, 10 Nov 2023 14:47:03 +0100 Subject: [PATCH] fix(GODT-3116): Panic on closed channel If sync finishes during shutdown, check if there is a context error in the deferred go routine before rewinding the event. --- internal/services/imapservice/service.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/services/imapservice/service.go b/internal/services/imapservice/service.go index 293b86e1..20acd9c3 100644 --- a/internal/services/imapservice/service.go +++ b/internal/services/imapservice/service.go @@ -395,6 +395,11 @@ func (s *Service) run(ctx context.Context) { //nolint gocyclo // event service is unable to reply to the request until the events have been processed. s.log.Info("Sync complete, starting API event stream") go func() { + // If context cancelled do not do anything + if ctx.Err() != nil { + return + } + if err := s.eventProvider.RewindEventID(ctx, s.lastHandledEventID); err != nil { if errors.Is(err, context.Canceled) { return