From 85f1e0ea6afab1218f93cd5e81cc1c1c5943518e Mon Sep 17 00:00:00 2001 From: PingWang Date: Thu, 19 May 2016 17:19:54 +0800 Subject: [PATCH 1/2] Fix the bug of the "removePod" function in node_info.go It should reduce the resource data after finding the pod in the pods, because perhaps no corresponding pod in the pods of the node, at this time it shouldn't reduce the resource data of the node. --- .../pkg/scheduler/schedulercache/node_info.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plugin/pkg/scheduler/schedulercache/node_info.go b/plugin/pkg/scheduler/schedulercache/node_info.go index 4b930058656..ec9ced39d5d 100644 --- a/plugin/pkg/scheduler/schedulercache/node_info.go +++ b/plugin/pkg/scheduler/schedulercache/node_info.go @@ -132,27 +132,27 @@ func (n *NodeInfo) removePod(pod *api.Pod) error { return err } - cpu, mem, nvidia_gpu, non0_cpu, non0_mem := calculateResource(pod) - n.requestedResource.MilliCPU -= cpu - n.requestedResource.Memory -= mem - n.requestedResource.NvidiaGPU -= nvidia_gpu - n.nonzeroRequest.MilliCPU -= non0_cpu - n.nonzeroRequest.Memory -= non0_mem - for i := range n.pods { k2, err := getPodKey(n.pods[i]) if err != nil { - glog.Errorf("Cannot get pod key, err: %v", err) + glog.Errorf("Cannot get node.pod(%s/%s) key, err: %v", n.pods[i].Namespace, n.pods[i].Name, err) continue } if k1 == k2 { // delete the element n.pods[i] = n.pods[len(n.pods)-1] n.pods = n.pods[:len(n.pods)-1] + // reduce the resource data + cpu, mem, nvidia_gpu, non0_cpu, non0_mem := calculateResource(pod) + n.requestedResource.MilliCPU -= cpu + n.requestedResource.Memory -= mem + n.requestedResource.NvidiaGPU -= nvidia_gpu + n.nonzeroRequest.MilliCPU -= non0_cpu + n.nonzeroRequest.Memory -= non0_mem return nil } } - return fmt.Errorf("no corresponding pod in pods") + return fmt.Errorf("no corresponding pod(%s/%s) in pods of node(%s)", pod.Namespace, pod.Name, n.node.Name) } func calculateResource(pod *api.Pod) (cpu int64, mem int64, nvidia_gpu int64, non0_cpu int64, non0_mem int64) { From 901011f242540b9c608cc357b52f1c6b2b69fe0b Mon Sep 17 00:00:00 2001 From: PingWang Date: Fri, 20 May 2016 09:07:43 +0800 Subject: [PATCH 2/2] Update node_info.go --- plugin/pkg/scheduler/schedulercache/node_info.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/pkg/scheduler/schedulercache/node_info.go b/plugin/pkg/scheduler/schedulercache/node_info.go index ec9ced39d5d..79890cd3d21 100644 --- a/plugin/pkg/scheduler/schedulercache/node_info.go +++ b/plugin/pkg/scheduler/schedulercache/node_info.go @@ -135,7 +135,7 @@ func (n *NodeInfo) removePod(pod *api.Pod) error { for i := range n.pods { k2, err := getPodKey(n.pods[i]) if err != nil { - glog.Errorf("Cannot get node.pod(%s/%s) key, err: %v", n.pods[i].Namespace, n.pods[i].Name, err) + glog.Errorf("Cannot get pod key, err: %v", err) continue } if k1 == k2 { @@ -152,7 +152,7 @@ func (n *NodeInfo) removePod(pod *api.Pod) error { return nil } } - return fmt.Errorf("no corresponding pod(%s/%s) in pods of node(%s)", pod.Namespace, pod.Name, n.node.Name) + return fmt.Errorf("no corresponding pod %s in pods of node %s", pod.Name, n.node.Name) } func calculateResource(pod *api.Pod) (cpu int64, mem int64, nvidia_gpu int64, non0_cpu int64, non0_mem int64) {