From f40067a8cce611c187ac3c06715b8968c7eebb50 Mon Sep 17 00:00:00 2001 From: Quan Tian Date: Tue, 2 Aug 2022 01:16:23 +0800 Subject: [PATCH] Remove duplicate and unused index from PodIndexer DaemonSetsController adds a "nodeName" index to PodIndexer, which is redundant with the "spec.nodeName" index of NodeLifecycleController. However, DaemonSetsController hasn't been using this index since #86730. This patch removes the redundant and unused index to reduce memory and CPU spent on it. Signed-off-by: Quan Tian --- pkg/controller/daemon/daemon_controller.go | 20 ------------------- .../daemon/daemon_controller_test.go | 3 +-- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/pkg/controller/daemon/daemon_controller.go b/pkg/controller/daemon/daemon_controller.go index 21bf7d4811f..3d85af355c1 100644 --- a/pkg/controller/daemon/daemon_controller.go +++ b/pkg/controller/daemon/daemon_controller.go @@ -114,8 +114,6 @@ type DaemonSetsController struct { historyStoreSynced cache.InformerSynced // podLister get list/get pods from the shared informers's store podLister corelisters.PodLister - // podNodeIndex indexes pods by their nodeName - podNodeIndex cache.Indexer // podStoreSynced returns true if the pod store has been synced at least once. // Added as a member to the struct to allow injection for testing. podStoreSynced cache.InformerSynced @@ -187,12 +185,6 @@ func NewDaemonSetsController( DeleteFunc: dsc.deletePod, }) dsc.podLister = podInformer.Lister() - - // This custom indexer will index pods based on their NodeName which will decrease the amount of pods we need to get in simulate() call. - podInformer.Informer().GetIndexer().AddIndexers(cache.Indexers{ - "nodeName": indexByPodNodeName, - }) - dsc.podNodeIndex = podInformer.Informer().GetIndexer() dsc.podStoreSynced = podInformer.Informer().HasSynced nodeInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ @@ -211,18 +203,6 @@ func NewDaemonSetsController( return dsc, nil } -func indexByPodNodeName(obj interface{}) ([]string, error) { - pod, ok := obj.(*v1.Pod) - if !ok { - return []string{}, nil - } - // We are only interested in active pods with nodeName set - if len(pod.Spec.NodeName) == 0 || pod.Status.Phase == v1.PodSucceeded || pod.Status.Phase == v1.PodFailed { - return []string{}, nil - } - return []string{pod.Spec.NodeName}, nil -} - func (dsc *DaemonSetsController) addDaemonset(obj interface{}) { ds := obj.(*apps.DaemonSet) klog.V(4).Infof("Adding daemon set %s", ds.Name) diff --git a/pkg/controller/daemon/daemon_controller_test.go b/pkg/controller/daemon/daemon_controller_test.go index 32d9dc05b09..686ae59a8b3 100644 --- a/pkg/controller/daemon/daemon_controller_test.go +++ b/pkg/controller/daemon/daemon_controller_test.go @@ -2234,9 +2234,8 @@ func TestNodeShouldRunDaemonPod(t *testing.T) { } manager.nodeStore.Add(node) for _, p := range c.podsOnNode { - manager.podStore.Add(p) p.Spec.NodeName = "test-node" - manager.podNodeIndex.Add(p) + manager.podStore.Add(p) } c.ds.Spec.UpdateStrategy = *strategy shouldRun, shouldContinueRunning := NodeShouldRunDaemonPod(node, c.ds)