From a2b80e67e1b71363b5cbd68600cd6cfa11ca557c Mon Sep 17 00:00:00 2001 From: wojtekt Date: Fri, 28 Dec 2018 15:34:43 +0100 Subject: [PATCH] Speedup listers for empty selectors Kubernetes-commit: 91e7f466b916c50b8c1cdb330fd06b397f49a358 --- tools/cache/listers.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/cache/listers.go b/tools/cache/listers.go index ce377329..311ff8c4 100644 --- a/tools/cache/listers.go +++ b/tools/cache/listers.go @@ -31,7 +31,14 @@ import ( type AppendFunc func(interface{}) func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error { + selectAll := selector.Empty() for _, m := range store.List() { + if selectAll { + // Avoid computing labels of the objects to speed up common flows + // of listing all objects. + appendFn(m) + continue + } metadata, err := meta.Accessor(m) if err != nil { return err @@ -44,8 +51,15 @@ func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error { } func ListAllByNamespace(indexer Indexer, namespace string, selector labels.Selector, appendFn AppendFunc) error { + selectAll := selector.Empty() if namespace == metav1.NamespaceAll { for _, m := range indexer.List() { + if selectAll { + // Avoid computing labels of the objects to speed up common flows + // of listing all objects. + appendFn(m) + continue + } metadata, err := meta.Accessor(m) if err != nil { return err @@ -74,6 +88,12 @@ func ListAllByNamespace(indexer Indexer, namespace string, selector labels.Selec return nil } for _, m := range items { + if selectAll { + // Avoid computing labels of the objects to speed up common flows + // of listing all objects. + appendFn(m) + continue + } metadata, err := meta.Accessor(m) if err != nil { return err