From 9b1e5ec507d60949f1c199e7d5259d84d2bb09aa Mon Sep 17 00:00:00 2001 From: Klaus Ma Date: Thu, 9 Mar 2017 11:09:38 +0800 Subject: [PATCH] Fixed potential OutOfSync of nodeInfo. --- .../pkg/scheduler/schedulercache/node_info.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/plugin/pkg/scheduler/schedulercache/node_info.go b/plugin/pkg/scheduler/schedulercache/node_info.go index 4fca801e41..3aa1560f2a 100644 --- a/plugin/pkg/scheduler/schedulercache/node_info.go +++ b/plugin/pkg/scheduler/schedulercache/node_info.go @@ -82,6 +82,19 @@ func (r *Resource) ResourceList() v1.ResourceList { return result } +func (r *Resource) Clone() *Resource { + res := &Resource{ + MilliCPU: r.MilliCPU, + Memory: r.Memory, + NvidiaGPU: r.NvidiaGPU, + } + res.OpaqueIntResources = make(map[v1.ResourceName]int64) + for k, v := range r.OpaqueIntResources { + res.OpaqueIntResources[k] = v + } + return res +} + func (r *Resource) AddOpaque(name v1.ResourceName, quantity int64) { // Lazily allocate opaque integer resource map. if r.OpaqueIntResources == nil { @@ -186,9 +199,9 @@ func (n *NodeInfo) AllocatableResource() Resource { func (n *NodeInfo) Clone() *NodeInfo { clone := &NodeInfo{ node: n.node, - requestedResource: &(*n.requestedResource), - nonzeroRequest: &(*n.nonzeroRequest), - allocatableResource: &(*n.allocatableResource), + requestedResource: n.requestedResource.Clone(), + nonzeroRequest: n.nonzeroRequest.Clone(), + allocatableResource: n.allocatableResource.Clone(), allowedPodNumber: n.allowedPodNumber, taintsErr: n.taintsErr, memoryPressureCondition: n.memoryPressureCondition,