From 7400d57943cf7576925d54e7daa42e397e71dfe4 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Wed, 28 Aug 2024 12:59:38 +0200 Subject: [PATCH] Refactor WaitUntilFreshAndList to split out filtering to separate function --- .../pkg/storage/cacher/watch_cache.go | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/storage/cacher/watch_cache.go b/staging/src/k8s.io/apiserver/pkg/storage/cacher/watch_cache.go index 34a48ac637d..66439e3334b 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/cacher/watch_cache.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/cacher/watch_cache.go @@ -506,19 +506,10 @@ func (w *watchCache) WaitUntilFreshAndList(ctx context.Context, resourceVersion if err != nil { return nil, 0, "", err } - - var result []interface{} - for _, item := range items { - elem, ok := item.(*storeElement) - if !ok { - return nil, 0, "", fmt.Errorf("non *storeElement returned from storage: %v", item) - } - if !hasPathPrefix(elem.Key, key) { - continue - } - result = append(result, item) + result, err := filterPrefix(key, items) + if err != nil { + return nil, 0, "", err } - sort.Sort(sortableStoreElements(result)) return result, rv, index, nil } @@ -554,6 +545,21 @@ func (w *watchCache) waitUntilFreshAndListItems(ctx context.Context, resourceVer return result, rv, index, err } +func filterPrefix(prefix string, items []interface{}) ([]interface{}, error) { + var result []interface{} + for _, item := range items { + elem, ok := item.(*storeElement) + if !ok { + return nil, fmt.Errorf("non *storeElement returned from storage: %v", item) + } + if !hasPathPrefix(elem.Key, prefix) { + continue + } + result = append(result, item) + } + return result, nil +} + func (w *watchCache) notFresh(resourceVersion uint64) bool { w.RLock() defer w.RUnlock()