Skip to content

Commit f0bd7db

Browse files
Merge pull request #959 from Thor-wl/0727-issue921
fix bug: capability validation failed when some running jobs finished or deleted
2 parents 1730f32 + bddfe01 commit f0bd7db

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

pkg/scheduler/actions/enqueue/enqueue.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ func (enqueue *Action) Execute(ssn *framework.Session) {
5555

5656
queues := util.NewPriorityQueue(ssn.QueueOrderFn)
5757
queueMap := map[api.QueueID]*api.QueueInfo{}
58-
5958
jobsMap := map[api.QueueID]*util.PriorityQueue{}
6059

6160
for _, job := range ssn.Jobs {
@@ -69,6 +68,7 @@ func (enqueue *Action) Execute(ssn *framework.Session) {
6968

7069
queueMap[queue.UID] = queue
7170
queues.Push(queue)
71+
ssn.InqueueJobResource[queue.UID] = api.EmptyResource()
7272
}
7373

7474
if job.PodGroup.Status.Phase == scheduling.PodGroupPending {
@@ -78,6 +78,11 @@ func (enqueue *Action) Execute(ssn *framework.Session) {
7878
klog.V(3).Infof("Added Job <%s/%s> into Queue <%s>", job.Namespace, job.Name, job.Queue)
7979
jobsMap[job.Queue].Push(job)
8080
}
81+
82+
if job.PodGroup.Status.Phase == scheduling.PodGroupInqueue {
83+
klog.V(3).Infof("Added Job <%s/%s> into InqueueResource", job.Namespace, job.Name)
84+
ssn.InqueueJobResource[job.Queue].Add(api.NewResource(*job.PodGroup.Spec.MinResources))
85+
}
8186
}
8287

8388
klog.V(3).Infof("Try to enqueue PodGroup to %d Queues", len(jobsMap))
@@ -124,6 +129,7 @@ func (enqueue *Action) Execute(ssn *framework.Session) {
124129
if inqueue {
125130
job.PodGroup.Status.Phase = scheduling.PodGroupInqueue
126131
ssn.Jobs[job.UID] = job
132+
ssn.InqueueJobResource[job.Queue].Add(api.NewResource(*job.PodGroup.Spec.MinResources))
127133
}
128134

129135
// Added Queue back until no job in Queue.

pkg/scheduler/framework/session.go

+10-7
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ type Session struct {
4444
// This should not be mutated after initiated
4545
podGroupStatus map[api.JobID]scheduling.PodGroupStatus
4646

47-
Jobs map[api.JobID]*api.JobInfo
48-
Nodes map[string]*api.NodeInfo
49-
Queues map[api.QueueID]*api.QueueInfo
50-
NamespaceInfo map[api.NamespaceName]*api.NamespaceInfo
47+
Jobs map[api.JobID]*api.JobInfo
48+
Nodes map[string]*api.NodeInfo
49+
Queues map[api.QueueID]*api.QueueInfo
50+
NamespaceInfo map[api.NamespaceName]*api.NamespaceInfo
51+
InqueueJobResource map[api.QueueID]*api.Resource
5152

5253
Tiers []conf.Tier
5354
Configurations []conf.Configuration
@@ -81,9 +82,10 @@ func openSession(cache cache.Cache) *Session {
8182

8283
podGroupStatus: map[api.JobID]scheduling.PodGroupStatus{},
8384

84-
Jobs: map[api.JobID]*api.JobInfo{},
85-
Nodes: map[string]*api.NodeInfo{},
86-
Queues: map[api.QueueID]*api.QueueInfo{},
85+
Jobs: map[api.JobID]*api.JobInfo{},
86+
Nodes: map[string]*api.NodeInfo{},
87+
Queues: map[api.QueueID]*api.QueueInfo{},
88+
InqueueJobResource: map[api.QueueID]*api.Resource{},
8789

8890
plugins: map[string]Plugin{},
8991
jobOrderFns: map[string]api.CompareFn{},
@@ -155,6 +157,7 @@ func closeSession(ssn *Session) {
155157
ssn.jobOrderFns = nil
156158
ssn.namespaceOrderFns = nil
157159
ssn.queueOrderFns = nil
160+
ssn.InqueueJobResource = nil
158161

159162
klog.V(3).Infof("Close Session %v", ssn.UID)
160163
}

pkg/scheduler/plugins/proportion/proportion.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package proportion
1818

1919
import (
2020
"k8s.io/klog"
21-
2221
"volcano.sh/volcano/pkg/scheduler/api"
2322
"volcano.sh/volcano/pkg/scheduler/api/helpers"
2423
"volcano.sh/volcano/pkg/scheduler/framework"
@@ -243,7 +242,7 @@ func (pp *proportionPlugin) OnSessionOpen(ssn *framework.Session) {
243242

244243
minReq := api.NewResource(*job.PodGroup.Spec.MinResources)
245244
// The queue resource quota limit has not reached
246-
return minReq.Add(attr.allocated).LessEqual(api.NewResource(queue.Queue.Spec.Capability))
245+
return minReq.Add(attr.allocated).Add(ssn.InqueueJobResource[job.Queue]).LessEqual(api.NewResource(queue.Queue.Spec.Capability))
247246
})
248247

249248
// Register event handlers.

0 commit comments

Comments
 (0)