- avoid run task more than once.

This commit is contained in:
gazebo
2018-10-26 17:34:40 +08:00
parent 9a8bcd506b
commit f12cfafe23

View File

@@ -221,26 +221,28 @@ func (t *BaseTask) MarshalJSON() ([]byte, error) {
} }
func (t *BaseTask) run(taskHandler func()) { func (t *BaseTask) run(taskHandler func()) {
utils.CallFuncAsync(func() { if t.GetStatus() == TaskStatusBegin {
defer func() { utils.CallFuncAsync(func() {
if r := recover(); r != nil { defer func() {
globals.SugarLogger.Errorf("panic in BaseTask.run task:%s, task detail:%s", t.Name, utils.Format4Output(t, false)) if r := recover(); r != nil {
} globals.SugarLogger.Errorf("panic in BaseTask.run task:%s, task detail:%s", t.Name, utils.Format4Output(t, false))
}() }
}()
taskHandler() taskHandler()
select { select {
case <-t.quitChan: case <-t.quitChan:
default: default:
close(t.quitChan) close(t.quitChan)
}
for _, subTask := range t.Children {
if _, err := subTask.GetResult(0); err != nil {
globals.SugarLogger.Infof("BaseTask run, failed with error:%v", err)
} }
} for _, subTask := range t.Children {
close(t.finishChan) if _, err := subTask.GetResult(0); err != nil {
}) globals.SugarLogger.Infof("BaseTask run, failed with error:%v", err)
}
}
close(t.finishChan)
})
}
} }
func (t *BaseTask) finishedOneJob(itemCount int, err error) { func (t *BaseTask) finishedOneJob(itemCount int, err error) {