From 804bc533dbb0d5e11bb4bbd5ec0039cec89b21ee Mon Sep 17 00:00:00 2001 From: Naeel Date: Sun, 26 Apr 2026 10:35:29 +0300 Subject: [PATCH] layer1: bootstrap router namespace manager --- .../2026-04-26-namespace-manager-step31.md | 15 +++++++++++++++ pkg/router/ns_watcher.go | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 doc/thinking/2026-04-26-namespace-manager-step31.md diff --git a/doc/thinking/2026-04-26-namespace-manager-step31.md b/doc/thinking/2026-04-26-namespace-manager-step31.md new file mode 100644 index 00000000..f35dbd5b --- /dev/null +++ b/doc/thinking/2026-04-26-namespace-manager-step31.md @@ -0,0 +1,15 @@ +# 2026-04-26 — NamespaceManager rewrite, step 31 + +## Цель шага + +Закрыть startup gap в `router`: локальный manager должен отражать существующие namespace-ы уже на старте. + +## Что меняем + +1. `router.StartNSWatcher()` создаёт пустой `NamespaceManager`. +2. После `Subscribe()` выполняется `BootstrapAndDispatch()` по snapshot resolver-а. + +## Что НЕ меняем + +- не меняем `HTTPTriggerSet.AddNamespace()`; +- не добавляем remove path. \ No newline at end of file diff --git a/pkg/router/ns_watcher.go b/pkg/router/ns_watcher.go index a8306149..84591480 100644 --- a/pkg/router/ns_watcher.go +++ b/pkg/router/ns_watcher.go @@ -30,8 +30,11 @@ func StartNSWatcher( ts *HTTPTriggerSet, mgr manager.Interface, ) { - nsManager := utils.NewBootstrappedNamespaceManager(utils.DefaultNSResolver(), utils.NamespaceSourceEnv, time.Now().UTC()) + nsManager := utils.NewNamespaceManager() nsManager.Subscribe(NewNamespaceSubscriber(ts, mgr)) + if _, err := nsManager.BootstrapAndDispatch(ctx, utils.DefaultNSResolver().Snapshot(), utils.NamespaceSourceEnv, time.Now().UTC()); err != nil { + logger.Error("router.NSWatcher: BootstrapAndDispatch failed", zap.Error(err)) + } factory := k8sInformers.NewSharedInformerFactoryWithOptions( kubeClient,