mirror of https://github.com/k3s-io/k3s
fix an issue in NodeInfo.Clone()
- usedPorts is a map-in-map struct, add fix to ensure it's deep copied - updated unit testpull/8/head
parent
1da4c59e46
commit
976797c0b8
|
@ -400,8 +400,13 @@ func (n *NodeInfo) Clone() *NodeInfo {
|
||||||
clone.pods = append([]*v1.Pod(nil), n.pods...)
|
clone.pods = append([]*v1.Pod(nil), n.pods...)
|
||||||
}
|
}
|
||||||
if len(n.usedPorts) > 0 {
|
if len(n.usedPorts) > 0 {
|
||||||
for k, v := range n.usedPorts {
|
// util.HostPortInfo is a map-in-map struct
|
||||||
clone.usedPorts[k] = v
|
// make sure it's deep copied
|
||||||
|
for ip, portMap := range n.usedPorts {
|
||||||
|
clone.usedPorts[ip] = make(map[util.ProtocolPort]struct{})
|
||||||
|
for protocolPort, v := range portMap {
|
||||||
|
clone.usedPorts[ip][protocolPort] = v
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(n.podsWithAffinity) > 0 {
|
if len(n.podsWithAffinity) > 0 {
|
||||||
|
|
|
@ -495,6 +495,7 @@ func TestNodeInfoClone(t *testing.T) {
|
||||||
ni := test.nodeInfo.Clone()
|
ni := test.nodeInfo.Clone()
|
||||||
// Modify the field to check if the result is a clone of the origin one.
|
// Modify the field to check if the result is a clone of the origin one.
|
||||||
test.nodeInfo.generation += 10
|
test.nodeInfo.generation += 10
|
||||||
|
test.nodeInfo.usedPorts.Remove("127.0.0.1", "TCP", 80)
|
||||||
if !reflect.DeepEqual(test.expected, ni) {
|
if !reflect.DeepEqual(test.expected, ni) {
|
||||||
t.Errorf("expected: %#v, got: %#v", test.expected, ni)
|
t.Errorf("expected: %#v, got: %#v", test.expected, ni)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue