From 698c5bca9d532851d3fe52e7a9ceaf842c48b5c8 Mon Sep 17 00:00:00 2001 From: weihaoran <772343610@qq.com> Date: Wed, 2 Jul 2025 16:29:04 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E3=80=90clusterd=E3=80=91=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=88=9B=E5=BB=BA?= =?UTF-8?q?data-trace-cm=E6=8B=A6=E6=88=AA=E6=8F=90=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pkg/application/profiling/grpc_service.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/component/clusterd/pkg/application/profiling/grpc_service.go b/component/clusterd/pkg/application/profiling/grpc_service.go index 6ea03f4d6..d5ba1bb9b 100644 --- a/component/clusterd/pkg/application/profiling/grpc_service.go +++ b/component/clusterd/pkg/application/profiling/grpc_service.go @@ -6,6 +6,7 @@ package profiling import ( "context" "encoding/json" + errors2 "errors" "fmt" "strings" "sync" @@ -76,7 +77,10 @@ func (ps *SwitchManager) ModifyTrainingDataTraceSwitch(ctx context.Context, Code: ErrInvalidParam}, fmt.Errorf("the format of jobNsName is not namespace/jobName") } jobNs, jobName := jobNameInfo[0], jobNameInfo[1] - owner := getPGOwner(jobNs, jobName) + owner, err := getPGOwner(jobNs, jobName) + if err != nil { + return &profiling.DataTypeRes{Message: err.Error(), Code: ErrServerFault}, err + } dtc := profile.NewDataTraceController(jobNs, jobName) if cm, err := kube.GetConfigMap(profile.DataTraceCmPrefix+dtc.JobName, dtc.JobNamespace); cm == nil || err != nil { @@ -108,15 +112,18 @@ func (ps *SwitchManager) ModifyTrainingDataTraceSwitch(ctx context.Context, return response, nil } -func getPGOwner(jobNs, jobName string) v1.OwnerReference { +func getPGOwner(jobNs, jobName string) (v1.OwnerReference, error) { jobInfo := job.GetJobByNameSpaceAndName(jobName, jobNs) + if len(jobInfo.Key) == 0 { + return v1.OwnerReference{}, errors2.New("job does not exist") + } pgInfo := podgroup.GetPodGroup(jobInfo.Key) owner, err := podgroup.GetOwnerRefByPG(&pgInfo) if err != nil { hwlog.RunLog.Errorf("get owner from pg failed, error: %v", err) - return v1.OwnerReference{} + return v1.OwnerReference{}, errors2.New("get owner from pg failed") } - return owner + return owner, nil } func (ps *SwitchManager) notifySubscriber(jobName string, jobNs string, dtc *profile.DataTraceController, -- Gitee From 6e27583778d9daca68746664b228129f0fba244a Mon Sep 17 00:00:00 2001 From: weihaoran <772343610@qq.com> Date: Wed, 2 Jul 2025 16:35:21 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E3=80=90clusterd=E3=80=91=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=88=9B=E5=BB=BA?= =?UTF-8?q?data-trace-cm=E6=8B=A6=E6=88=AA=E6=8F=90=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/clusterd/pkg/application/profiling/grpc_service.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/component/clusterd/pkg/application/profiling/grpc_service.go b/component/clusterd/pkg/application/profiling/grpc_service.go index d5ba1bb9b..9f205438f 100644 --- a/component/clusterd/pkg/application/profiling/grpc_service.go +++ b/component/clusterd/pkg/application/profiling/grpc_service.go @@ -114,7 +114,8 @@ func (ps *SwitchManager) ModifyTrainingDataTraceSwitch(ctx context.Context, func getPGOwner(jobNs, jobName string) (v1.OwnerReference, error) { jobInfo := job.GetJobByNameSpaceAndName(jobName, jobNs) - if len(jobInfo.Key) == 0 { + _, ok := job.GetJobCache(jobInfo.Key) + if !ok { return v1.OwnerReference{}, errors2.New("job does not exist") } pgInfo := podgroup.GetPodGroup(jobInfo.Key) -- Gitee From 614bf6612277932581634766b88a96b67fc830c3 Mon Sep 17 00:00:00 2001 From: weihaoran <772343610@qq.com> Date: Wed, 2 Jul 2025 16:38:59 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E3=80=90clusterd=E3=80=91=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=88=9B=E5=BB=BA?= =?UTF-8?q?data-trace-cm=E6=8B=A6=E6=88=AA=E6=8F=90=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/clusterd/pkg/application/profiling/grpc_service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/component/clusterd/pkg/application/profiling/grpc_service.go b/component/clusterd/pkg/application/profiling/grpc_service.go index 9f205438f..da906125a 100644 --- a/component/clusterd/pkg/application/profiling/grpc_service.go +++ b/component/clusterd/pkg/application/profiling/grpc_service.go @@ -121,8 +121,8 @@ func getPGOwner(jobNs, jobName string) (v1.OwnerReference, error) { pgInfo := podgroup.GetPodGroup(jobInfo.Key) owner, err := podgroup.GetOwnerRefByPG(&pgInfo) if err != nil { - hwlog.RunLog.Errorf("get owner from pg failed, error: %v", err) - return v1.OwnerReference{}, errors2.New("get owner from pg failed") + hwlog.RunLog.Errorf("get owner reference from pg failed, error: %v", err) + return v1.OwnerReference{}, errors2.New("get owner reference from pg failed") } return owner, nil } -- Gitee From e204659f6696fc4a03c4b0ea63772827c1269369 Mon Sep 17 00:00:00 2001 From: weihaoran <772343610@qq.com> Date: Wed, 2 Jul 2025 16:44:58 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E3=80=90clusterd=E3=80=91=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=88=9B=E5=BB=BA?= =?UTF-8?q?data-trace-cm=E6=8B=A6=E6=88=AA=E6=8F=90=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/clusterd/pkg/application/profiling/grpc_service.go | 1 + 1 file changed, 1 insertion(+) diff --git a/component/clusterd/pkg/application/profiling/grpc_service.go b/component/clusterd/pkg/application/profiling/grpc_service.go index da906125a..97e6a03d3 100644 --- a/component/clusterd/pkg/application/profiling/grpc_service.go +++ b/component/clusterd/pkg/application/profiling/grpc_service.go @@ -79,6 +79,7 @@ func (ps *SwitchManager) ModifyTrainingDataTraceSwitch(ctx context.Context, jobNs, jobName := jobNameInfo[0], jobNameInfo[1] owner, err := getPGOwner(jobNs, jobName) if err != nil { + // failed to get owner reference, need return. This is to avoid bypassing the lifecycle control for this cm return &profiling.DataTypeRes{Message: err.Error(), Code: ErrServerFault}, err } dtc := profile.NewDataTraceController(jobNs, jobName) -- Gitee From 88956eba3bc077ffe22ffa5e2404c40a8928eb56 Mon Sep 17 00:00:00 2001 From: weihaoran <772343610@qq.com> Date: Wed, 2 Jul 2025 16:45:28 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E3=80=90clusterd=E3=80=91=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=88=9B=E5=BB=BA?= =?UTF-8?q?data-trace-cm=E6=8B=A6=E6=88=AA=E6=8F=90=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/clusterd/pkg/application/profiling/grpc_service.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/component/clusterd/pkg/application/profiling/grpc_service.go b/component/clusterd/pkg/application/profiling/grpc_service.go index 97e6a03d3..42c65a697 100644 --- a/component/clusterd/pkg/application/profiling/grpc_service.go +++ b/component/clusterd/pkg/application/profiling/grpc_service.go @@ -6,7 +6,6 @@ package profiling import ( "context" "encoding/json" - errors2 "errors" "fmt" "strings" "sync" @@ -117,13 +116,13 @@ func getPGOwner(jobNs, jobName string) (v1.OwnerReference, error) { jobInfo := job.GetJobByNameSpaceAndName(jobName, jobNs) _, ok := job.GetJobCache(jobInfo.Key) if !ok { - return v1.OwnerReference{}, errors2.New("job does not exist") + return v1.OwnerReference{}, fmt.Errorf("job does not exist") } pgInfo := podgroup.GetPodGroup(jobInfo.Key) owner, err := podgroup.GetOwnerRefByPG(&pgInfo) if err != nil { hwlog.RunLog.Errorf("get owner reference from pg failed, error: %v", err) - return v1.OwnerReference{}, errors2.New("get owner reference from pg failed") + return v1.OwnerReference{}, fmt.Errorf("get owner reference from pg failed") } return owner, nil } -- Gitee From d47305a1558324cceb81e38486e0d9da319c554e Mon Sep 17 00:00:00 2001 From: weihaoran <772343610@qq.com> Date: Wed, 2 Jul 2025 17:22:36 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E3=80=90clusterd=E3=80=91=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=88=9B=E5=BB=BA?= =?UTF-8?q?data-trace-cm=E6=8B=A6=E6=88=AA=E6=8F=90=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- component/clusterd/pkg/application/profiling/grpc_service.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/component/clusterd/pkg/application/profiling/grpc_service.go b/component/clusterd/pkg/application/profiling/grpc_service.go index 42c65a697..b6db1a1f3 100644 --- a/component/clusterd/pkg/application/profiling/grpc_service.go +++ b/component/clusterd/pkg/application/profiling/grpc_service.go @@ -114,8 +114,7 @@ func (ps *SwitchManager) ModifyTrainingDataTraceSwitch(ctx context.Context, func getPGOwner(jobNs, jobName string) (v1.OwnerReference, error) { jobInfo := job.GetJobByNameSpaceAndName(jobName, jobNs) - _, ok := job.GetJobCache(jobInfo.Key) - if !ok { + if jobInfo.Key == "" { return v1.OwnerReference{}, fmt.Errorf("job does not exist") } pgInfo := podgroup.GetPodGroup(jobInfo.Key) -- Gitee From ad5501be8a5591fe20619141c60fc331d1b22f08 Mon Sep 17 00:00:00 2001 From: weihaoran <772343610@qq.com> Date: Wed, 2 Jul 2025 20:57:29 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E3=80=90clusterd=E3=80=91=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=88=9B=E5=BB=BA?= =?UTF-8?q?data-trace-cm=E6=8B=A6=E6=88=AA=E6=8F=90=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clusterd/pkg/application/profiling/grpc_service_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/component/clusterd/pkg/application/profiling/grpc_service_test.go b/component/clusterd/pkg/application/profiling/grpc_service_test.go index e2334066f..b17d7b632 100644 --- a/component/clusterd/pkg/application/profiling/grpc_service_test.go +++ b/component/clusterd/pkg/application/profiling/grpc_service_test.go @@ -14,6 +14,7 @@ import ( corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/applyconfigurations/meta/v1" "ascend-common/common-utils/hwlog" "clusterd/pkg/application/config" @@ -48,6 +49,8 @@ var publisher = config.NewConfigPublisher[*profiling.DataStatusRes]( jobName, context.Background(), "", nil) func TestModifyTrainingDataTraceSwitch(t *testing.T) { + p1 := gomonkey.ApplyFuncReturn(getPGOwner, v1.OwnerReference, nil) + defer p1.Reset() testInvalidJobNsNameFormat(t) testConfigMapNotExistAndCreateSuccess(t) testConfigMapNotExistAndCreateFail(t) -- Gitee