From 9d742f34d6e9701b80f9201b1a49bc6514db8b28 Mon Sep 17 00:00:00 2001 From: tbs60 Date: Tue, 7 Nov 2023 09:49:13 +0800 Subject: [PATCH] feat:more for bazel_no_launcher,issue: #140 --- .../controller/pkg/manager/works_pool.go | 5 ++- .../bk_dist/executor/pkg/dist_executor.go | 31 ++++++++++++++----- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/backend/booster/bk_dist/controller/pkg/manager/works_pool.go b/src/backend/booster/bk_dist/controller/pkg/manager/works_pool.go index f6680364..1f2da0c1 100644 --- a/src/backend/booster/bk_dist/controller/pkg/manager/works_pool.go +++ b/src/backend/booster/bk_dist/controller/pkg/manager/works_pool.go @@ -85,7 +85,10 @@ func (wp *worksPool) getFirstWork() (*types.Work, error) { defer wp.RUnlock() for _, work := range wp.works { - return work, nil + // check whether work is valid + if work.Basic().Info().IsWorking() { + return work, nil + } } return nil, types.ErrNoWork diff --git a/src/backend/booster/bk_dist/executor/pkg/dist_executor.go b/src/backend/booster/bk_dist/executor/pkg/dist_executor.go index bf65b8cf..903615f1 100644 --- a/src/backend/booster/bk_dist/executor/pkg/dist_executor.go +++ b/src/backend/booster/bk_dist/executor/pkg/dist_executor.go @@ -27,6 +27,7 @@ import ( dcTypes "github.com/TencentBlueKing/bk-turbo/src/backend/booster/bk_dist/common/types" dcUtil "github.com/TencentBlueKing/bk-turbo/src/backend/booster/bk_dist/common/util" v1 "github.com/TencentBlueKing/bk-turbo/src/backend/booster/bk_dist/controller/pkg/api/v1" + "github.com/TencentBlueKing/bk-turbo/src/backend/booster/bk_dist/dashboard/pkg/api" "github.com/TencentBlueKing/bk-turbo/src/backend/booster/common/blog" ) @@ -112,7 +113,28 @@ func (d *DistExecutor) Run() (int, string, error) { } // work available, run work with executor-progress - return d.runWork() + // add retry here + var retcode int + retmsg := "" + waitsecs := 5 + var err error + for i := 0; i < 3; i++ { + retcode, retmsg, err = d.runWork() + if retcode != int(api.ServerErrOK) { + break + } + + if err != nil { + blog.Warnf("executor: failed to execute with error [%+v] for %d times cmd:%s", err, i+1, strings.Join(os.Args, " ")) + time.Sleep(time.Duration(waitsecs) * time.Second) + waitsecs = waitsecs * 2 + continue + } + + break + } + + return retcode, retmsg, err } func compileReadFromStdin() bool { @@ -180,13 +202,6 @@ func (d *DistExecutor) runWork() (int, string, error) { return 0, "", fmt.Errorf("not enough args to execute") } - // ignore argv[0], it's itself - // _, _, r, err := d.work.Job(d.stats).ExecuteLocalTask(os.Args[1:], "") - // if err != nil { - // blog.Errorf("executor: execute failed, error: %v, exit code: -1", err) - // return -1, err - // } - retcode, retmsg, r, err := d.work.Job(d.stats).ExecuteLocalTask(os.Args[1:], "") if err != nil || retcode != 0 { if r != nil {