diff --git a/pkg/stores/partition/store.go b/pkg/stores/partition/store.go index fc5677fb..f42b65e6 100644 --- a/pkg/stores/partition/store.go +++ b/pkg/stores/partition/store.go @@ -175,18 +175,22 @@ func (s *Store) List(apiOp *types.APIRequest, schema *types.APISchema) (types.AP opts := listprocessor.ParseQuery(apiOp) - key, err := s.getCacheKey(apiOp, opts) - if err != nil { - return result, err - } - var list []unstructured.Unstructured - if key.revision != "" && s.listCache != nil { - cachedList, ok := s.listCache.Get(key) - if ok { - logrus.Tracef("found cached list for query %s?%s", apiOp.Request.URL.Path, apiOp.Request.URL.RawQuery) - list = cachedList.(*unstructured.UnstructuredList).Items - result.Continue = cachedList.(*unstructured.UnstructuredList).GetContinue() + var key cacheKey + if s.listCache != nil { + key, err = s.getCacheKey(apiOp, opts) + if err != nil { + return result, err + } + + if key.revision != "" { + cachedList, ok := s.listCache.Get(key) + if ok { + logrus.Tracef("found cached list for query %s?%s", apiOp.Request.URL.Path, apiOp.Request.URL.RawQuery) + list = cachedList.(*unstructured.UnstructuredList).Items + result.Continue = cachedList.(*unstructured.UnstructuredList).GetContinue() + result.Revision = key.revision + } } } if list == nil { // did not look in cache or was not found in cache @@ -202,7 +206,7 @@ func (s *Store) List(apiOp *types.APIRequest, schema *types.APISchema) (types.AP return result, lister.Err() } list = listprocessor.SortList(list, opts.Sort) - key.revision = lister.Revision() + result.Revision = lister.Revision() listToCache := &unstructured.UnstructuredList{ Items: list, } @@ -212,6 +216,7 @@ func (s *Store) List(apiOp *types.APIRequest, schema *types.APISchema) (types.AP listToCache.SetContinue(c) } if s.listCache != nil { + key.revision = result.Revision s.listCache.Add(key, listToCache, 30*time.Minute) } result.Continue = lister.Continue() @@ -224,7 +229,6 @@ func (s *Store) List(apiOp *types.APIRequest, schema *types.APISchema) (types.AP result.Objects = append(result.Objects, toAPI(schema, item, nil)) } - result.Revision = key.revision result.Pages = pages return result, lister.Err() }