Skip to content

Commit 6a3b71d

Browse files
committed
Add default sg only if no sgs
1 parent 23e8f6f commit 6a3b71d

File tree

3 files changed

+28
-20
lines changed

3 files changed

+28
-20
lines changed

pkg/scheduler/api/podgroup_info/allocation_info_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ func Test_getTasksFromQueue(t *testing.T) {
135135
func Test_getTasksPriorityQueuePerSubGroup(t *testing.T) {
136136
pg := NewPodGroupInfo("test-pg")
137137
sg := NewSubGroupInfo("test-sub-group", 1)
138-
pg.SubGroups["test-sub-group"] = sg
138+
pg.SubGroups = map[string]*SubGroupInfo{
139+
"test-sub-group": sg,
140+
}
139141

140142
pg.AddTaskInfo(simpleTask("a", "test-sub-group", pod_status.Pending))
141143
m := getTasksPriorityQueuePerSubGroup(pg, tasksOrderFn, true)

pkg/scheduler/api/podgroup_info/job_info.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,9 @@ func NewPodGroupInfo(uid common_info.PodGroupID, tasks ...*pod_info.PodInfo) *Po
110110
Stale: false,
111111
},
112112

113-
SubGroups: map[string]*SubGroupInfo{},
113+
SubGroups: map[string]*SubGroupInfo{
114+
DefaultSubGroup: NewSubGroupInfo(DefaultSubGroup, 1),
115+
},
114116

115117
LastStartTimestamp: nil,
116118
activeAllocatedCount: ptr.To(0),
@@ -176,10 +178,12 @@ func (pgi *PodGroupInfo) SetPodGroup(pg *enginev2alpha2.PodGroup) {
176178
if _, exists := pgi.SubGroups[DefaultSubGroup]; !exists {
177179
pgi.SubGroups[DefaultSubGroup] = NewSubGroupInfo(DefaultSubGroup, max(pg.Spec.MinMember, 1))
178180
}
179-
}
180-
for _, sg := range pg.Spec.SubGroups {
181-
subGroupInfo := FromSubGroup(&sg)
182-
pgi.SubGroups[subGroupInfo.name] = subGroupInfo
181+
} else {
182+
pgi.SubGroups = map[string]*SubGroupInfo{}
183+
for _, sg := range pg.Spec.SubGroups {
184+
subGroupInfo := FromSubGroup(&sg)
185+
pgi.SubGroups[subGroupInfo.name] = subGroupInfo
186+
}
183187
}
184188

185189
if pg.Annotations[commonconstants.StalePodgroupTimeStamp] != "" {
@@ -222,16 +226,17 @@ func (pgi *PodGroupInfo) addTaskIndex(ti *pod_info.PodInfo) {
222226
}
223227

224228
func (pgi *PodGroupInfo) AddTaskInfo(ti *pod_info.PodInfo) {
225-
subGroup, found := pgi.SubGroups[ti.SubGroupName]
226-
if found {
227-
subGroup.AssignTask(ti)
228-
} else {
229-
if pgi.SubGroups[DefaultSubGroup] == nil {
230-
pgi.SubGroups[DefaultSubGroup] = NewSubGroupInfo(DefaultSubGroup, 0)
231-
}
232-
pgi.SubGroups[DefaultSubGroup].AssignTask(ti)
229+
taskSubGroupName := DefaultSubGroup
230+
if ti.SubGroupName != "" {
231+
taskSubGroupName = ti.SubGroupName
232+
}
233+
subGroup, found := pgi.SubGroups[taskSubGroupName]
234+
if !found {
235+
log.InfraLogger.Warningf("AddTaskInfo for task <%s/%s> of podGroup: <%s/%s>: SubGroup not found <%s>", ti.Namespace, ti.Name, pgi.Namespace, pgi.Name, taskSubGroupName)
236+
return
233237
}
234238

239+
subGroup.AssignTask(ti)
235240
pgi.addTaskIndex(ti)
236241

237242
if pod_status.AllocatedStatus(ti.Status) {

pkg/scheduler/api/podgroup_info/job_info_test.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func TestAddTaskInfo(t *testing.T) {
7474
expected: &PodGroupInfo{
7575
UID: case01_uid,
7676
Allocated: common_info.BuildResource("4000m", "4G"),
77-
SubGroups: map[string]*SubGroupInfo{DefaultSubGroup: NewSubGroupInfo(DefaultSubGroup, 0).WithPodInfos(pod_info.PodsMap{
77+
SubGroups: map[string]*SubGroupInfo{DefaultSubGroup: NewSubGroupInfo(DefaultSubGroup, 1).WithPodInfos(pod_info.PodsMap{
7878
case01_task1.UID: case01_task1,
7979
case01_task2.UID: case01_task2,
8080
case01_task3.UID: case01_task3,
@@ -155,7 +155,7 @@ func TestDeleteTaskInfo(t *testing.T) {
155155
expected: &PodGroupInfo{
156156
UID: case01_uid,
157157
Allocated: common_info.BuildResource("3000m", "3G"),
158-
SubGroups: map[string]*SubGroupInfo{DefaultSubGroup: NewSubGroupInfo(DefaultSubGroup, 0).WithPodInfos(pod_info.PodsMap{
158+
SubGroups: map[string]*SubGroupInfo{DefaultSubGroup: NewSubGroupInfo(DefaultSubGroup, 1).WithPodInfos(pod_info.PodsMap{
159159
case01_task1.UID: case01_task1,
160160
case01_task2.UID: case01_task2,
161161
case01_task3.UID: case01_task3,
@@ -177,7 +177,7 @@ func TestDeleteTaskInfo(t *testing.T) {
177177
expected: &PodGroupInfo{
178178
UID: case02_uid,
179179
Allocated: common_info.BuildResource("3000m", "3G"),
180-
SubGroups: map[string]*SubGroupInfo{DefaultSubGroup: NewSubGroupInfo(DefaultSubGroup, 0).WithPodInfos(pod_info.PodsMap{
180+
SubGroups: map[string]*SubGroupInfo{DefaultSubGroup: NewSubGroupInfo(DefaultSubGroup, 1).WithPodInfos(pod_info.PodsMap{
181181
case02_task1.UID: case02_task1,
182182
case02_task2.UID: case02_task2,
183183
case02_task3.UID: case02_task3,
@@ -993,10 +993,11 @@ func TestPodGroupInfo_IsStale(t *testing.T) {
993993
pgi := NewPodGroupInfo("test-podgroup")
994994

995995
sg1 := NewSubGroupInfo("sg1", 1)
996-
pgi.SubGroups["sg1"] = sg1
997-
998996
sg2 := NewSubGroupInfo("sg2", 1)
999-
pgi.SubGroups["sg2"] = sg2
997+
pgi.SubGroups = map[string]*SubGroupInfo{
998+
"sg1": sg1,
999+
"sg2": sg2,
1000+
}
10001001

10011002
task1 := pod_info.NewTaskInfo(&v1.Pod{
10021003
ObjectMeta: metav1.ObjectMeta{

0 commit comments

Comments
 (0)