layer1: guard router informer maps step 6

This commit is contained in:
Naeel
2026-04-26 09:37:09 +03:00
parent 94f26b69ee
commit 87477d4529
3 changed files with 76 additions and 6 deletions
+11
View File
@@ -18,6 +18,7 @@ package router
import (
"fmt"
"sync"
"time"
"go.uber.org/zap"
@@ -35,6 +36,7 @@ type (
// FunctionReference -> function metadata
refCache *cache.Cache[namespacedTriggerReference, resolveResult]
funcInformer map[string]k8sCache.SharedIndexInformer
mu sync.RWMutex
logger *zap.Logger
// store k8sCache.Store
}
@@ -120,12 +122,21 @@ func (frr *functionReferenceResolver) resolve(trigger fv1.HTTPTrigger) (*resolve
}
func (frr *functionReferenceResolver) getInformerByNamespace(namespace string) (k8sCache.SharedIndexInformer, error) {
frr.mu.RLock()
defer frr.mu.RUnlock()
if informer, ok := frr.funcInformer[namespace]; ok {
return informer, nil
}
return nil, fmt.Errorf("informer for namespace %s not found", namespace)
}
func (frr *functionReferenceResolver) addInformer(namespace string, informer k8sCache.SharedIndexInformer) {
frr.mu.Lock()
defer frr.mu.Unlock()
frr.funcInformer[namespace] = informer
}
// resolveByName simply looks up function by name in a namespace.
func (frr *functionReferenceResolver) resolveByName(namespace, name string) (*resolveResult, error) {
// get function from cache