From 488157963a5ee1516a78ace7ec7fed4a5f65fa6d Mon Sep 17 00:00:00 2001 From: Naeel Date: Sun, 26 Apr 2026 10:35:50 +0300 Subject: [PATCH] layer1: bootstrap executor namespace manager --- .../2026-04-26-namespace-manager-step32.md | 15 +++++++++++++++ pkg/executor/multitenant/ns_watcher.go | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 doc/thinking/2026-04-26-namespace-manager-step32.md diff --git a/doc/thinking/2026-04-26-namespace-manager-step32.md b/doc/thinking/2026-04-26-namespace-manager-step32.md new file mode 100644 index 00000000..5fd6ee5d --- /dev/null +++ b/doc/thinking/2026-04-26-namespace-manager-step32.md @@ -0,0 +1,15 @@ +# 2026-04-26 — NamespaceManager rewrite, step 32 + +## Цель шага + +Закрыть startup gap в `executor/multitenant`: manager должен отражать стартовые namespace-ы и прогонять их через тот же subscriber path. + +## Что меняем + +1. `StartNSWatcher()` создаёт пустой `NamespaceManager`. +2. После `Subscribe()` выполняется `BootstrapAndDispatch()` по snapshot resolver-а. + +## Что НЕ меняем + +- не меняем `registerNamespace()`; +- не добавляем remove path. \ No newline at end of file diff --git a/pkg/executor/multitenant/ns_watcher.go b/pkg/executor/multitenant/ns_watcher.go index 6a41e712..973f43da 100644 --- a/pkg/executor/multitenant/ns_watcher.go +++ b/pkg/executor/multitenant/ns_watcher.go @@ -93,8 +93,11 @@ func StartNSWatcher( executorTypes map[fv1.ExecutorType]executortype.ExecutorType, mgr manager.Interface, ) { - nsManager := utils.NewBootstrappedNamespaceManager(utils.DefaultNSResolver(), utils.NamespaceSourceEnv, time.Now().UTC()) + nsManager := utils.NewNamespaceManager() nsManager.Subscribe(NewNamespaceSubscriber(logger, kubernetesClient, executorTypes, mgr)) + if _, err := nsManager.BootstrapAndDispatch(ctx, utils.DefaultNSResolver().Snapshot(), utils.NamespaceSourceEnv, time.Now().UTC()); err != nil { + logger.Error("multitenant.NSWatcher: BootstrapAndDispatch failed", zap.Error(err)) + } // Use a label-filtered informer so only Namespaces with our label are delivered. // The resync period of 30m is standard for Fission informers — it re-lists to recover