diff options
author | Alexander Kiryukhin <alexander@kiryukhin.su> | 2019-04-04 10:15:18 +0300 |
---|---|---|
committer | Alexander Kiryukhin <alexander@kiryukhin.su> | 2019-04-04 10:15:18 +0300 |
commit | c86dd5f3d70d310a26da73ee4ef2897121c18909 (patch) | |
tree | 214132f97bcc4eed30d8603deed344ad89f97c1f | |
parent | 73b65fc197971415a40b6dbae243c88c731cda83 (diff) |
Fixed:v0.4.1
- ListenOsSignal handler now not in waitgroup. Before if all routines exited by itself (with DoNothingIfDone or DoNothingIfFail policies) waitgroup waits OS listener to complete
-rwxr-xr-x | rutina.go | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -117,17 +117,17 @@ func (r *Rutina) ListenOsSignals(signals ...os.Signal) { if len(signals) == 0 { signals = []os.Signal{syscall.SIGINT, syscall.SIGTERM} } - r.Go(func(ctx context.Context) error { + go func() { sig := make(chan os.Signal, 1) signal.Notify(sig, signals...) r.log("starting OS signals listener") select { case s := <-sig: r.log("stopping by OS signal (%v)", s) - case <-ctx.Done(): + r.Cancel() + case <-r.ctx.Done(): } - return nil - }, ShutdownIfDone, ShutdownIfFail) + }() } // Wait all routines and returns first error or nil if all routines completes without errors |