From 35e4deebc20d412fd8725420d7aa37a7c72d0af6 Mon Sep 17 00:00:00 2001 From: Roman Baron Date: Thu, 28 Aug 2025 11:32:06 +0300 Subject: [PATCH 1/2] Changed SetPodGroup to overwrite default subgroup minAvailable --- pkg/scheduler/api/podgroup_info/job_info.go | 13 ++++--------- test/e2e/suites/api/events/events_test.go | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/pkg/scheduler/api/podgroup_info/job_info.go b/pkg/scheduler/api/podgroup_info/job_info.go index bd090d070..1d8277c4b 100644 --- a/pkg/scheduler/api/podgroup_info/job_info.go +++ b/pkg/scheduler/api/podgroup_info/job_info.go @@ -171,19 +171,14 @@ func (pgi *PodGroupInfo) SetPodGroup(pg *enginev2alpha2.PodGroup) { pgi.PodGroup = pg pgi.PodGroupUID = pg.UID - if len(pg.Spec.SubGroups) == 0 { - if pgi.SubGroups == nil { - pgi.SubGroups = map[string]*SubGroupInfo{} - } - if _, exists := pgi.SubGroups[DefaultSubGroup]; !exists { - pgi.SubGroups[DefaultSubGroup] = NewSubGroupInfo(DefaultSubGroup, max(pg.Spec.MinMember, 1)) - } - } else { - pgi.SubGroups = map[string]*SubGroupInfo{} + pgi.SubGroups = map[string]*SubGroupInfo{} + if len(pg.Spec.SubGroups) > 0 { for _, sg := range pg.Spec.SubGroups { subGroupInfo := FromSubGroup(&sg) pgi.SubGroups[subGroupInfo.name] = subGroupInfo } + } else { + pgi.SubGroups[DefaultSubGroup] = NewSubGroupInfo(DefaultSubGroup, max(pg.Spec.MinMember, 1)) } if pg.Annotations[commonconstants.StalePodgroupTimeStamp] != "" { diff --git a/test/e2e/suites/api/events/events_test.go b/test/e2e/suites/api/events/events_test.go index b11ef0ab7..c41a38602 100644 --- a/test/e2e/suites/api/events/events_test.go +++ b/test/e2e/suites/api/events/events_test.go @@ -22,7 +22,7 @@ import ( "github.com/NVIDIA/KAI-scheduler/test/e2e/modules/wait" ) -var _ = Describe("Priority Preemption", Ordered, func() { +var _ = Describe("Events", Ordered, func() { var ( testCtx *testcontext.TestContext ) From a4be98bb002f41e5d939b37a21203c727c5f37f3 Mon Sep 17 00:00:00 2001 From: Roman Baron Date: Thu, 28 Aug 2025 12:42:27 +0300 Subject: [PATCH 2/2] Update existing default subgroup minMember if already exists --- pkg/scheduler/api/podgroup_info/job_info.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/pkg/scheduler/api/podgroup_info/job_info.go b/pkg/scheduler/api/podgroup_info/job_info.go index 1d8277c4b..c80be0195 100644 --- a/pkg/scheduler/api/podgroup_info/job_info.go +++ b/pkg/scheduler/api/podgroup_info/job_info.go @@ -171,14 +171,22 @@ func (pgi *PodGroupInfo) SetPodGroup(pg *enginev2alpha2.PodGroup) { pgi.PodGroup = pg pgi.PodGroupUID = pg.UID - pgi.SubGroups = map[string]*SubGroupInfo{} - if len(pg.Spec.SubGroups) > 0 { + if len(pg.Spec.SubGroups) == 0 { + if pgi.SubGroups == nil { + pgi.SubGroups = map[string]*SubGroupInfo{} + } + defaultSubGroup, found := pgi.SubGroups[DefaultSubGroup] + if !found { + pgi.SubGroups[DefaultSubGroup] = NewSubGroupInfo(DefaultSubGroup, max(pg.Spec.MinMember, 1)) + } else { + defaultSubGroup.SetMinAvailable(max(pg.Spec.MinMember, 1)) + } + } else { + pgi.SubGroups = map[string]*SubGroupInfo{} for _, sg := range pg.Spec.SubGroups { subGroupInfo := FromSubGroup(&sg) pgi.SubGroups[subGroupInfo.name] = subGroupInfo } - } else { - pgi.SubGroups[DefaultSubGroup] = NewSubGroupInfo(DefaultSubGroup, max(pg.Spec.MinMember, 1)) } if pg.Annotations[commonconstants.StalePodgroupTimeStamp] != "" {