Fix shutdown bug in modules

This commit is contained in:
Daniel 2019-04-26 11:37:12 +02:00
parent 2da792a08d
commit 5908ff3d0b

View file

@ -39,17 +39,18 @@ func Shutdown() error {
err := stopModules() err := stopModules()
if err != nil { if err != nil {
log.Error(err.Error()) log.Errorf("modules: shutdown completed with error: %s", err)
return err } else {
log.Info("modules: shutdown completed")
} }
log.Info("modules: shutdown complete")
log.Shutdown() log.Shutdown()
return nil return err
} }
func stopModules() error { func stopModules() error {
var rep *report var rep *report
var lastErr error
reports := make(chan *report) reports := make(chan *report)
execCnt := 0 execCnt := 0
reportCnt := 0 reportCnt := 0
@ -88,7 +89,8 @@ func stopModules() error {
rep = <-reports rep = <-reports
rep.module.inTransition.UnSet() rep.module.inTransition.UnSet()
if rep.err != nil { if rep.err != nil {
return fmt.Errorf("modules: could not stop module %s: %s", rep.module.Name, rep.err) lastErr = rep.err
log.Warningf("modules: could not stop module %s: %s", rep.module.Name, rep.err)
} }
reportCnt++ reportCnt++
rep.module.Stopped.Set() rep.module.Stopped.Set()
@ -96,8 +98,7 @@ func stopModules() error {
// exit if done // exit if done
if reportCnt == startedCnt { if reportCnt == startedCnt {
return nil return lastErr
} }
} }
} }