diff --git a/business/jxutils/tasksch/task.go b/business/jxutils/tasksch/task.go index d5ac4fd31..11ddfd049 100644 --- a/business/jxutils/tasksch/task.go +++ b/business/jxutils/tasksch/task.go @@ -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) {