- tasksch.NewParallelTask2,支持部分失败时得到准备的成功,失败个数信息

This commit is contained in:
gazebo
2019-08-06 14:20:32 +08:00
parent baa9157949
commit c020130819
9 changed files with 68 additions and 48 deletions

View File

@@ -434,7 +434,8 @@ func (t *BaseTask) run(taskHandler func()) {
}
}
func (t *BaseTask) finishedOneJob(itemCount int, err error) {
// successCount表示在返回错误的情况下部分成功的个数如果没有返回错误则successCount无意义
func (t *BaseTask) finishedOneJob(itemCount, successCount int, err error) {
t.locker.Lock()
defer t.locker.Unlock()
@@ -443,7 +444,8 @@ func (t *BaseTask) finishedOneJob(itemCount int, err error) {
t.FinishedItemCount += itemCount
t.FinishedJobCount++
} else {
t.FailedItemCount += itemCount
t.FinishedItemCount += successCount
t.FailedItemCount += itemCount - successCount
t.FailedJobCount++
}
}
@@ -473,6 +475,15 @@ func (task *BaseTask) callWorker(worker func() (retVal interface{}, err error))
err = fmt.Errorf("panic, r:%v", r)
}
}()
retVal, err = worker()
return retVal, err
return worker()
}
func (task *BaseTask) callWorker2(worker func() (retVal interface{}, successCount int, err error)) (retVal interface{}, successCount int, err error) {
defer func() {
if r := recover(); r != nil {
globals.SugarLogger.Errorf("callWorker panic:%v", r)
err = fmt.Errorf("panic, r:%v", r)
}
}()
return worker()
}