Files
fission-src/doc/thinking/2026-04-26-namespace-manager-step6.md
T

34 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-04-26 — NamespaceManager rewrite, step 6
## Цель шага
Закрыть race-surface в router вокруг динамического добавления namespace informer-ов.
## Проблема
В router есть два связанных mutable map:
- `HTTPTriggerSet.triggerInformer`
- `HTTPTriggerSet.funcInformer`
`AddNamespace()` пишет в них на лету, а `updateRouter()` одновременно итерируется по ним.
Кроме того, `functionReferenceResolver` получает `funcInformer` map и читает ее без синхронизации.
Это делает dynamic onboarding потенциальным источником:
- `concurrent map iteration and map write`;
- чтения неполного снимка informer-ов;
- гонок между router rebuild и resolver lookup.
## Исправление
1. В `HTTPTriggerSet` добавляется `RWMutex` для informer maps.
2. Чтение informer-ов переводится на snapshot helpers.
3. `functionReferenceResolver` получает собственный lock и метод `addInformer()`.
4. `router.AddNamespace()` обновляет router map и resolver map под контролируемым доступом.
## Что НЕ меняем
- не переписываем router lifecycle целиком;
- не добавляем remove semantics;
- не меняем trigger/function business logic.