32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# 2026-04-26 — NamespaceManager rewrite, step 4
|
|
|
|
## Цель шага
|
|
|
|
Исправить реальный functional bug в dynamic onboarding buildermgr.
|
|
|
|
## Дефект
|
|
|
|
`buildermgr.StartNSWatcher()` вызывает:
|
|
|
|
1. `envw.AddNamespace()`
|
|
2. `pkgw.AddNamespace()`
|
|
|
|
Но оба watcher-а используют один и тот же глобальный `nsResolver.AddNamespace()` для dedup.
|
|
Из-за этого первый вызов добавляет namespace, а второй считает его уже обработанным и
|
|
выходит раньше времени. В результате у динамического tenant namespace может подняться только
|
|
Environment informer без Package informer.
|
|
|
|
## Исправление
|
|
|
|
1. Глобальный resolver обновляется один раз в `buildermgr/ns_watcher.go`.
|
|
2. `environmentWatcher` dedup делает только по своей map `envWatchInformer`.
|
|
3. `packageWatcher` dedup делает только по своим map `pkgInformer` / `podInformer`.
|
|
|
|
Так buildermgr становится симметричнее executor path: общий registry обновляется один раз,
|
|
а конкретные компоненты сами решают, подписаны ли они уже на namespace.
|
|
|
|
## Что НЕ меняем
|
|
|
|
- не добавляем cleanup/remove semantics;
|
|
- не меняем router;
|
|
- не трогаем newdeploy parity gap на этом шаге. |