Fixed:
- ListenOsSignal handler now not in waitgroup. Before if all routines exited by itself (with DoNothingIfDone or DoNothingIfFail policies) waitgroup waits OS listener to complete
This commit is contained in:
parent
73b65fc197
commit
c86dd5f3d7
1 changed files with 4 additions and 4 deletions
|
@ -117,17 +117,17 @@ func (r *Rutina) ListenOsSignals(signals ...os.Signal) {
|
||||||
if len(signals) == 0 {
|
if len(signals) == 0 {
|
||||||
signals = []os.Signal{syscall.SIGINT, syscall.SIGTERM}
|
signals = []os.Signal{syscall.SIGINT, syscall.SIGTERM}
|
||||||
}
|
}
|
||||||
r.Go(func(ctx context.Context) error {
|
go func() {
|
||||||
sig := make(chan os.Signal, 1)
|
sig := make(chan os.Signal, 1)
|
||||||
signal.Notify(sig, signals...)
|
signal.Notify(sig, signals...)
|
||||||
r.log("starting OS signals listener")
|
r.log("starting OS signals listener")
|
||||||
select {
|
select {
|
||||||
case s := <-sig:
|
case s := <-sig:
|
||||||
r.log("stopping by OS signal (%v)", s)
|
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
|
// Wait all routines and returns first error or nil if all routines completes without errors
|
||||||
|
|
Loading…
Reference in a new issue