From ab1807f2bcbe5d9d82b612647eccb1b9bbb6fb2c Mon Sep 17 00:00:00 2001 From: Nayef Ghattas Date: Thu, 16 Apr 2020 13:51:27 +0200 Subject: [PATCH] copy podStatus.ContainerStatuses before sorting it --- pkg/kubelet/kubelet_pods.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index f3ab4de692f..750dea5e7c1 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -1837,11 +1837,15 @@ func (kl *Kubelet) convertToAPIContainerStatuses(pod *v1.Pod, podStatus *kubecon statuses[container.Name] = status } + // Copy the slice before sorting it + containerStatusesCopy := make([]*kubecontainer.Status, len(podStatus.ContainerStatuses)) + copy(containerStatusesCopy, podStatus.ContainerStatuses) + // Make the latest container status comes first. - sort.Sort(sort.Reverse(kubecontainer.SortContainerStatusesByCreationTime(podStatus.ContainerStatuses))) + sort.Sort(sort.Reverse(kubecontainer.SortContainerStatusesByCreationTime(containerStatusesCopy))) // Set container statuses according to the statuses seen in pod status containerSeen := map[string]int{} - for _, cStatus := range podStatus.ContainerStatuses { + for _, cStatus := range containerStatusesCopy { cName := cStatus.Name if _, ok := statuses[cName]; !ok { // This would also ignore the infra container.