- 整理tasksch
This commit is contained in:
@@ -113,7 +113,7 @@ type BaseTask struct {
|
||||
Err error `json:"err"`
|
||||
OriginalErr error `json:"-"`
|
||||
|
||||
detailErrList []error
|
||||
batchErrList []error
|
||||
|
||||
finishChan chan struct{}
|
||||
C <-chan struct{} `json:"-"`
|
||||
@@ -168,7 +168,7 @@ func (t *BaseTask) GetID() string {
|
||||
|
||||
func (t *BaseTask) GetResult(duration time.Duration) (retVal []interface{}, err error) {
|
||||
if t.GetStatus() >= TaskStatusEndBegin {
|
||||
return t.Result, t.OriginalErr
|
||||
return t.getResult(), t.GetOriginalErr()
|
||||
}
|
||||
if duration == 0 {
|
||||
duration = time.Hour * 10000 // duration为0表示无限等待
|
||||
@@ -178,7 +178,7 @@ func (t *BaseTask) GetResult(duration time.Duration) (retVal []interface{}, err
|
||||
case <-t.finishChan:
|
||||
t.isGetResultCalled = true
|
||||
timer.Stop()
|
||||
return t.Result, t.OriginalErr
|
||||
return t.getResult(), t.GetOriginalErr()
|
||||
case <-timer.C:
|
||||
}
|
||||
return nil, ErrTaskNotFinished
|
||||
@@ -276,6 +276,18 @@ func (t *BaseTask) GetNoticeMsg() string {
|
||||
return t.NoticeMsg
|
||||
}
|
||||
|
||||
func (t *BaseTask) getResult() []interface{} {
|
||||
t.locker.RLock()
|
||||
defer t.locker.RUnlock()
|
||||
return t.Result
|
||||
}
|
||||
|
||||
func (t *BaseTask) GetErr() error {
|
||||
t.locker.RLock()
|
||||
defer t.locker.RUnlock()
|
||||
return t.Err
|
||||
}
|
||||
|
||||
func (t *BaseTask) GetOriginalErr() error {
|
||||
t.locker.RLock()
|
||||
defer t.locker.RUnlock()
|
||||
@@ -285,7 +297,7 @@ func (t *BaseTask) GetOriginalErr() error {
|
||||
func (t *BaseTask) GetDetailErrList() []error {
|
||||
t.locker.RLock()
|
||||
defer t.locker.RUnlock()
|
||||
return t.detailErrList
|
||||
return t.batchErrList
|
||||
}
|
||||
|
||||
func AddChild(parentTask ITask, task ITask) ITask {
|
||||
@@ -327,6 +339,7 @@ func (t *BaseTask) run(taskHandler func()) {
|
||||
default:
|
||||
close(t.quitChan)
|
||||
}
|
||||
// todo 如下代码可能有对t.Children操作的并发问题
|
||||
for _, subTask := range t.Children {
|
||||
if _, err := subTask.GetResult(0); err != nil {
|
||||
globals.SugarLogger.Infof("BaseTask run, failed with error:%v", err)
|
||||
@@ -381,13 +394,13 @@ func (t *BaseTask) setStatus(status int) {
|
||||
t.Status = status
|
||||
}
|
||||
|
||||
func (t *BaseTask) buildTaskErrFromDetail() (err error) {
|
||||
if len(t.detailErrList) > 0 {
|
||||
strList := make([]string, len(t.detailErrList))
|
||||
for k, v := range t.detailErrList {
|
||||
func (t *BaseTask) buildTaskErrFromBatchErrList() (err error) {
|
||||
if len(t.batchErrList) > 0 {
|
||||
strList := make([]string, len(t.batchErrList))
|
||||
for k, v := range t.batchErrList {
|
||||
strList[k] = v.Error()
|
||||
}
|
||||
return NewTaskError(t.Name, fmt.Errorf("总共:%d, 失败:%d, 详情:\n%s", t.TotalItemCount, t.FailedItemCount, strings.Join(strList, "\n")))
|
||||
return NewTaskError(t.Name, fmt.Errorf("总共:%d, 成功:%d, 失败:%d, 详情:\n%s", t.TotalItemCount, t.FinishedItemCount, t.FailedItemCount, strings.Join(strList, "\n")))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user