From a6d1a48d0235656d1c2cd9a140f4a022105b7d96 Mon Sep 17 00:00:00 2001 From: goshado Date: Thu, 9 Jan 2025 21:21:26 +0200 Subject: [PATCH] fix: event handler listen to ctx.Done --- pkg/event_handler/main.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/pkg/event_handler/main.go b/pkg/event_handler/main.go index e819677..b620b0b 100644 --- a/pkg/event_handler/main.go +++ b/pkg/event_handler/main.go @@ -27,14 +27,24 @@ func Start(ctx context.Context, stop context.CancelFunc, cfg *conf.GlobalConfig, Notifier: notifier, } go func() { - for event := range watcher.ResultChan() { - err2 := handler.Handle(ctx, &event) - if err2 != nil { - log.Printf("[event handler] failed to Handle workflow event %s", err2) // ERROR + for { + select { + case <-ctx.Done(): + log.Print("[event handler] context canceled, stopping watcher") + watcher.Stop() + return + case event, ok := <-watcher.ResultChan(): + if !ok { + log.Print("[event handler] result channel closed") + watcher.Stop() + return + } + if err2 := handler.Handle(ctx, &event); err2 != nil { + log.Printf("[event handler] failed to Handle workflow event: %v", err2) + } } + stop() } - log.Print("[event handler] stopped work, closing watcher") - watcher.Stop() - stop() + }() }