From afc100b59c9def8fc8639185be9d29cd3ce0f32e Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Fri, 8 Nov 2024 10:17:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/ioswitch/exec/executor.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pkgs/ioswitch/exec/executor.go b/pkgs/ioswitch/exec/executor.go index 4f0b3ca..50ed2d3 100644 --- a/pkgs/ioswitch/exec/executor.go +++ b/pkgs/ioswitch/exec/executor.go @@ -2,6 +2,7 @@ package exec import ( "context" + "errors" "fmt" "sync" @@ -61,23 +62,24 @@ func (s *Executor) Run(ctx *ExecContext) (map[string]VarValue, error) { func (s *Executor) runOps(ops []Op, ctx *ExecContext, cancel context.CancelFunc) error { lock := sync.Mutex{} + var err error var wg sync.WaitGroup wg.Add(len(ops)) for i, arg := range ops { - go func(arg Op, index int) { + go func(op Op, index int) { defer wg.Done() - if e := arg.Execute(ctx, s); e != nil { + if e := op.Execute(ctx, s); e != nil { lock.Lock() // 尽量不记录 Canceled 错误,除非没有其他错误 - if err == nil { - err = e - } else if err == context.Canceled { - err = e - } else if e != context.Canceled { - err = multierror.Append(err, e) + if errors.Is(e, context.Canceled) { + if err == nil { + err = context.Canceled + } + } else { + err = multierror.Append(err, fmt.Errorf("%T: %w", op, e)) } lock.Unlock()