layer1: checkpoint namespace manager runtime series

This commit is contained in:
Naeel
2026-04-26 11:44:36 +03:00
parent 6e037a506d
commit 90924cdec7
12 changed files with 32 additions and 26 deletions
+1 -1
View File
@@ -40,4 +40,4 @@ func registerBuilderNamespace(ctx context.Context, namespace string, envw builde
if pkgw != nil { if pkgw != nil {
pkgw.AddNamespace(ctx, namespace, mgr) pkgw.AddNamespace(ctx, namespace, mgr)
} }
} }
+1 -1
View File
@@ -49,4 +49,4 @@ func TestNewNamespaceSubscriberAddAndResync(t *testing.T) {
if envw.lastNamespace != "tenant-builder-a" || pkgw.lastNamespace != "tenant-builder-a" { if envw.lastNamespace != "tenant-builder-a" || pkgw.lastNamespace != "tenant-builder-a" {
t.Fatalf("expected namespace to be forwarded to both watchers") t.Fatalf("expected namespace to be forwarded to both watchers")
} }
} }
@@ -29,4 +29,4 @@ func NewNamespaceSubscriber(
return nil return nil
}, },
} }
} }
@@ -34,4 +34,4 @@ func TestNewNamespaceSubscriberAddAndResync(t *testing.T) {
if poolmgr.lastNamespace != "tenant-executor-b" { if poolmgr.lastNamespace != "tenant-executor-b" {
t.Fatalf("expected namespace to be forwarded to executor type") t.Fatalf("expected namespace to be forwarded to executor type")
} }
} }
+1
View File
@@ -71,6 +71,7 @@ import (
"github.com/fission/fission/pkg/utils" "github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/manager" "github.com/fission/fission/pkg/utils/manager"
) )
// StartNSWatcher registers a Kubernetes Namespace Informer that reacts immediately // StartNSWatcher registers a Kubernetes Namespace Informer that reacts immediately
// when a Namespace with label fission.io/managed=true is created or relabeled. // when a Namespace with label fission.io/managed=true is created or relabeled.
// //
+14 -10
View File
@@ -21,21 +21,25 @@ type fakeExecutorType struct {
} }
func (f *fakeExecutorType) Run(context.Context, manager.Interface) {} func (f *fakeExecutorType) Run(context.Context, manager.Interface) {}
func (f *fakeExecutorType) GetTypeName(context.Context) fv1.ExecutorType { return fv1.ExecutorTypePoolmgr } func (f *fakeExecutorType) GetTypeName(context.Context) fv1.ExecutorType {
return fv1.ExecutorTypePoolmgr
}
func (f *fakeExecutorType) GetFuncSvc(context.Context, *fv1.Function) (*fscache.FuncSvc, error) { func (f *fakeExecutorType) GetFuncSvc(context.Context, *fv1.Function) (*fscache.FuncSvc, error) {
return nil, nil return nil, nil
} }
func (f *fakeExecutorType) GetFuncSvcFromCache(context.Context, *fv1.Function) (*fscache.FuncSvc, error) { func (f *fakeExecutorType) GetFuncSvcFromCache(context.Context, *fv1.Function) (*fscache.FuncSvc, error) {
return nil, nil return nil, nil
} }
func (f *fakeExecutorType) DumpDebugInfo(context.Context) error { return nil } func (f *fakeExecutorType) DumpDebugInfo(context.Context) error { return nil }
func (f *fakeExecutorType) DeleteFuncSvcFromCache(context.Context, *fscache.FuncSvc) {} func (f *fakeExecutorType) DeleteFuncSvcFromCache(context.Context, *fscache.FuncSvc) {}
func (f *fakeExecutorType) TapService(context.Context, string) error { return nil } func (f *fakeExecutorType) TapService(context.Context, string) error { return nil }
func (f *fakeExecutorType) UnTapService(context.Context, *metav1.ObjectMeta, string) {} func (f *fakeExecutorType) UnTapService(context.Context, *metav1.ObjectMeta, string) {}
func (f *fakeExecutorType) MarkSpecializationFailure(context.Context, *metav1.ObjectMeta) {} func (f *fakeExecutorType) MarkSpecializationFailure(context.Context, *metav1.ObjectMeta) {}
func (f *fakeExecutorType) IsValid(context.Context, *fscache.FuncSvc) bool { return true } func (f *fakeExecutorType) IsValid(context.Context, *fscache.FuncSvc) bool { return true }
func (f *fakeExecutorType) RefreshFuncPods(context.Context, *zap.Logger, fv1.Function) error { return nil } func (f *fakeExecutorType) RefreshFuncPods(context.Context, *zap.Logger, fv1.Function) error {
func (f *fakeExecutorType) AdoptExistingResources(context.Context) {} return nil
}
func (f *fakeExecutorType) AdoptExistingResources(context.Context) {}
func (f *fakeExecutorType) CleanupOldExecutorObjects(context.Context) {} func (f *fakeExecutorType) CleanupOldExecutorObjects(context.Context) {}
func (f *fakeExecutorType) AddNamespace(ctx context.Context, ns string, mgr manager.Interface) error { func (f *fakeExecutorType) AddNamespace(ctx context.Context, ns string, mgr manager.Interface) error {
f.addCalls++ f.addCalls++
@@ -62,7 +66,7 @@ func TestRegisterExecutorTypes(t *testing.T) {
func TestRegisterExecutorTypesAggregatesErrors(t *testing.T) { func TestRegisterExecutorTypesAggregatesErrors(t *testing.T) {
err := registerExecutorTypes(context.Background(), zap.NewNop(), "tenant-executor-a", map[fv1.ExecutorType]executortype.ExecutorType{ err := registerExecutorTypes(context.Background(), zap.NewNop(), "tenant-executor-a", map[fv1.ExecutorType]executortype.ExecutorType{
fv1.ExecutorTypePoolmgr: &fakeExecutorType{addErr: errors.New("poolmgr failed")}, fv1.ExecutorTypePoolmgr: &fakeExecutorType{addErr: errors.New("poolmgr failed")},
fv1.ExecutorTypeContainer: &fakeExecutorType{}, fv1.ExecutorTypeContainer: &fakeExecutorType{},
}, nil) }, nil)
if err == nil { if err == nil {
@@ -71,4 +75,4 @@ func TestRegisterExecutorTypesAggregatesErrors(t *testing.T) {
if err.Error() != "poolmgr failed" { if err.Error() != "poolmgr failed" {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
} }
+1 -1
View File
@@ -28,4 +28,4 @@ func registerRouterNamespace(ctx context.Context, namespace string, ts routerNam
return nil return nil
} }
return ts.AddNamespace(ctx, namespace, mgr) return ts.AddNamespace(ctx, namespace, mgr)
} }
+1 -1
View File
@@ -49,4 +49,4 @@ func TestRegisterRouterNamespacePropagatesError(t *testing.T) {
if err == nil || err.Error() != "add failed" { if err == nil || err.Error() != "add failed" {
t.Fatalf("expected router add error to be propagated, got %v", err) t.Fatalf("expected router add error to be propagated, got %v", err)
} }
} }
+1
View File
@@ -14,6 +14,7 @@ import (
"github.com/fission/fission/pkg/utils" "github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/manager" "github.com/fission/fission/pkg/utils/manager"
) )
// StartNSWatcher registers a Kubernetes Namespace Informer for the router. // StartNSWatcher registers a Kubernetes Namespace Informer for the router.
// Whenever a Namespace with label fission.io/managed=true appears (or is relabeled), // Whenever a Namespace with label fission.io/managed=true appears (or is relabeled),
// the router immediately subscribes to HTTPTriggers and Functions in that namespace. // the router immediately subscribes to HTTPTriggers and Functions in that namespace.
+4 -4
View File
@@ -25,10 +25,10 @@ type NamespaceSubscriber interface {
} }
type NamespaceSubscriberFuncs struct { type NamespaceSubscriberFuncs struct {
SubscriberName string SubscriberName string
AddFunc func(ctx context.Context, record NamespaceRecord) error AddFunc func(ctx context.Context, record NamespaceRecord) error
RemoveFunc func(ctx context.Context, record NamespaceRecord) error RemoveFunc func(ctx context.Context, record NamespaceRecord) error
ResyncFunc func(ctx context.Context, record NamespaceRecord) error ResyncFunc func(ctx context.Context, record NamespaceRecord) error
} }
func (s NamespaceSubscriberFuncs) Name() string { func (s NamespaceSubscriberFuncs) Name() string {
+1 -1
View File
@@ -44,7 +44,7 @@ const (
type NamespaceRemovalStrategy string type NamespaceRemovalStrategy string
const ( const (
NamespaceRemovalStrategyTrackOnly NamespaceRemovalStrategy = "track-only" NamespaceRemovalStrategyTrackOnly NamespaceRemovalStrategy = "track-only"
NamespaceRemovalStrategyDispatchRemove NamespaceRemovalStrategy = "dispatch-remove" NamespaceRemovalStrategyDispatchRemove NamespaceRemovalStrategy = "dispatch-remove"
) )
+5 -5
View File
@@ -16,11 +16,11 @@ import (
) )
type testNamespaceSubscriber struct { type testNamespaceSubscriber struct {
name string name string
addErr error addErr error
removeErr error removeErr error
resyncErr error resyncErr error
addCalls int addCalls int
removeCalls int removeCalls int
resyncCalls int resyncCalls int
} }