- avoid run task more than once.
This commit is contained in:
@@ -221,26 +221,28 @@ func (t *BaseTask) MarshalJSON() ([]byte, error) {
|
||||
}
|
||||
|
||||
func (t *BaseTask) run(taskHandler func()) {
|
||||
utils.CallFuncAsync(func() {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
globals.SugarLogger.Errorf("panic in BaseTask.run task:%s, task detail:%s", t.Name, utils.Format4Output(t, false))
|
||||
}
|
||||
}()
|
||||
if t.GetStatus() == TaskStatusBegin {
|
||||
utils.CallFuncAsync(func() {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
globals.SugarLogger.Errorf("panic in BaseTask.run task:%s, task detail:%s", t.Name, utils.Format4Output(t, false))
|
||||
}
|
||||
}()
|
||||
|
||||
taskHandler()
|
||||
select {
|
||||
case <-t.quitChan:
|
||||
default:
|
||||
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)
|
||||
taskHandler()
|
||||
select {
|
||||
case <-t.quitChan:
|
||||
default:
|
||||
close(t.quitChan)
|
||||
}
|
||||
}
|
||||
close(t.finishChan)
|
||||
})
|
||||
for _, subTask := range t.Children {
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user