Make common cache typed with generics (#2896)

Making typed common cache so that we don't use wrong types
across set/get methods and more higher-level methods can be
defined for cache.
Currently, we are not able to operate over all keys of the cache
due to generic types.
I also removed code comments around the cache.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
Sanket Sudake
2024-01-04 10:46:32 +05:30
committed by GitHub
parent 12f8017d9b
commit 0c8573467b
8 changed files with 105 additions and 145 deletions
+4 -5
View File
@@ -29,7 +29,7 @@ import (
type (
functionServiceMap struct {
logger *zap.Logger
cache *cache.Cache // map[metadataKey]*url.URL
cache *cache.Cache[metadataKey, *url.URL]
}
// metav1.ObjectMeta is not hashable, so we make a hashable copy
@@ -44,7 +44,7 @@ type (
func makeFunctionServiceMap(logger *zap.Logger, expiry time.Duration) *functionServiceMap {
return &functionServiceMap{
logger: logger.Named("function_service_map"),
cache: cache.MakeCache(expiry, 0),
cache: cache.MakeCache[metadataKey, *url.URL](expiry, 0),
}
}
@@ -62,15 +62,14 @@ func (fmap *functionServiceMap) lookup(f *metav1.ObjectMeta) (*url.URL, error) {
if err != nil {
return nil, err
}
u := item.(*url.URL)
return u, nil
return item, nil
}
func (fmap *functionServiceMap) assign(f *metav1.ObjectMeta, serviceURL *url.URL) {
mk := keyFromMetadata(f)
old, err := fmap.cache.Set(*mk, serviceURL)
if err != nil {
if *serviceURL == *(old.(*url.URL)) {
if *serviceURL == *old {
return
}
fmap.logger.Error("error caching service url for function with a different value", zap.Error(err))