From b6e4ef5b5485677b3a676adaa510a69c7390f7c4 Mon Sep 17 00:00:00 2001 From: "stonezdj(Daojun Zhang)" Date: Mon, 20 Jun 2022 15:46:55 +0800 Subject: [PATCH] (cherry-pick) Skip to refresh execution status when unchanged (#17034) Skip to refresh execution status when unchanged fixes #16640 Signed-off-by: stonezdj --- src/pkg/task/dao/execution.go | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/pkg/task/dao/execution.go b/src/pkg/task/dao/execution.go index 6911876f1..fb6b54d2d 100644 --- a/src/pkg/task/dao/execution.go +++ b/src/pkg/task/dao/execution.go @@ -1,16 +1,16 @@ -// Copyright Project Harbor Authors +// Copyright Project Harbor Authors // -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package dao @@ -205,10 +205,6 @@ func (e *executionDAO) RefreshStatus(ctx context.Context, id int64) (bool, strin // 3. bool: whether a retry is needed // 4. error: the error func (e *executionDAO) refreshStatus(ctx context.Context, id int64) (bool, string, bool, error) { - execution, err := e.Get(ctx, id) - if err != nil { - return false, "", false, err - } metrics, err := e.GetMetrics(ctx, id) if err != nil { return false, "", false, err @@ -229,6 +225,14 @@ func (e *executionDAO) refreshStatus(ctx context.Context, id int64) (bool, strin status = job.SuccessStatus.String() } + execution, err := e.Get(ctx, id) + if err != nil { + return false, "", false, err + } + if status == execution.Status { + return false, status, false, nil // status not changed + } + ormer, err := orm.FromContext(ctx) if err != nil { return false, "", false, err