doc: progress log 2026-04-27 — poolmgr reuse fix + console cleanup

This commit is contained in:
Naeel
2026-04-27 15:16:36 +03:00
parent 96a02b4d72
commit fcc3449469
5 changed files with 820 additions and 0 deletions
+47
View File
@@ -506,3 +506,50 @@
- Deployment обновлен и успешно прокатан.
- Проверено в live HTML: отдается
- `<link rel="icon" type="image/png" href="https://nubes.ru/themes/custom/nubes_2025/favicon.png">`.
---
## 2026-04-27
### Сессия: poolmgr reuse fix (Bug #1 + Bug #2) + console cleanup
#### Bug #1 — Generation в TapService/UnTapService (`client.go`, commit `775845b`)
- Симптом: 10/10 HTTP 200, но pod count рос 1→11 (новый pod на каждый invoke).
- Root cause: `Generation` не передавался в `TapService`/`UnTapService`. `MarkAvailable` строил ключ `{UID, RV, Generation=0}` вместо `{UID, RV, Generation=1}``activeRequests` никогда не декрементировался → всегда cache miss.
- Fix: добавить `Generation: fnMeta.Generation` в оба вызова в `pkg/executor/client/client.go`.
- Image: `naeel/fission-bundle:v1.22.0-multi-ns-9`.
#### Bug #2 — `gpm.podLister[ns]` nil для user namespace (`gpm.go`, commit `0cae275`)
- Симптом: после Bug #1 fix — reuse всё ещё не работал.
- Root cause: `AddNamespace` обновлял только `poolPodC.podLister[ns]`, но не `gpm.podLister[ns]`. `IsValid` вызывал `gpm.podLister[ns].Pods(...).Get(...)` → nil pointer panic → net/http рвал соединение → router retry → `activeRequests=1` (stuck) → cache miss → новый pod.
- Fix: добавить одну строку в `AddNamespace` в `pkg/executor/executortype/poolmgr/gpm.go`:
```go
gpm.podLister[ns] = gpmInformer.Core().V1().Pods().Lister()
```
- Image: `naeel/fission-bundle:v1.22.0-multi-ns-10`.
- Live validation: `PHP_PODS_BEFORE=1 → PHP_PODS_AFTER=2, NEW_PODS_CREATED=1, REUSE_WORKING=YES_REUSE_FIXED`.
- Postmortem: `doc/POOLMGR_REUSE_BUG_POSTMORTEM_2026-04-27.md`.
#### Console: убрана карточка тайм-триггеров (`console/ui/index.html`, commit `96a02b4`)
- Убрана карточка "Тайм-триггеры" из dashboard (счётчик `0`).
- Убраны JS-строки: `getJSON('/timetriggers')`, `setText('time-count', ...)`, `const [..., time]`.
- Образ: `naeel/fission-console:v1.1` (sha256:0713fee1...).
- Деплой: `kubectl set image deployment/fission-console console=naeel/fission-console:v1.1 -n fission`.
- **Важно**: container name в deployment = `console` (не `fission-console`!).
#### TODO: тайм-триггеры (не реализовано, отложено)
Нужно реализовать:
1. Поле "Cron" в форме создания функции (или отдельная форма/таблица)
2. `POST /console/api/timetriggers` → handler `handleCreateTimeTrigger`
3. `DELETE /console/api/timetriggers/:name` → handler
4. `model.CreateTimeTriggerRequest {Name, FunctionName, Cron string}`
5. CRD builder: `fission.io/v1` kind `TimeTrigger`, spec: `{cron, functionref: {name, namespace}}`
6. Таблица тайм-триггеров в UI с колонками: имя, функция, расписание, удалить
#### Текущее состояние live кластера
- Fission bundle: `naeel/fission-bundle:v1.22.0-multi-ns-10` (executor + router)
- Console: `naeel/fission-console:v1.1`
- User namespace: `fission-ffd1f598c169b0ae`
- Функции: `88` (Python), `88node` (Node.js), `phppp` (PHP), `rub` (Ruby)
- Маршруты: `/f598c169b0ae/{name}`
- SSH: `naeel@5.172.178.213`, key `~/.ssh/naeel_vm_id_ed25519`
- Token: `grep -m1 "^api_token" /home/naeel/terra/terraform/TEST_STAND/POSTGRES/terraform.tfvars | sed -E "s/^api_token = \"(.*)\"$/\1/"`