Skip to content

Commit 9a36417

Browse files
authored
fix: event handler listen to ctx.Done (#38)
* fix: event handler listen to ctx.Done * fix: event handler listen to ctx.Done * fix: close piper if watcher down * fix: reduntant use of watcher.stop * fix: update
1 parent f1e817f commit 9a36417

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

pkg/event_handler/main.go

+16-7
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,23 @@ func Start(ctx context.Context, stop context.CancelFunc, cfg *conf.GlobalConfig,
2727
Notifier: notifier,
2828
}
2929
go func() {
30-
for event := range watcher.ResultChan() {
31-
err2 := handler.Handle(ctx, &event)
32-
if err2 != nil {
33-
log.Printf("[event handler] failed to Handle workflow event %s", err2) // ERROR
30+
31+
for {
32+
select {
33+
case <-ctx.Done():
34+
log.Print("[event handler] context canceled, exiting")
35+
watcher.Stop()
36+
return
37+
case event, ok := <-watcher.ResultChan():
38+
if !ok {
39+
log.Print("[event handler] result channel closed")
40+
stop()
41+
return
42+
}
43+
if err2 := handler.Handle(ctx, &event); err2 != nil {
44+
log.Printf("[event handler] failed to handle workflow event: %v", err2)
45+
}
3446
}
3547
}
36-
log.Print("[event handler] stopped work, closing watcher")
37-
watcher.Stop()
38-
stop()
3948
}()
4049
}

0 commit comments

Comments
 (0)