fix(shared-sqs): deadlock in create_queue, UI sent_at bug, Redis deploy, TLS ingress (v0.1.13-v0.1.14)

- fix: add SyncQueues.Unlock() before return in create_queue.go happy path (deadlock after first CreateQueue)
- fix: UI m.sent -> m.sent_at (message dates always showed as dash)
- feat: add deployments/k8s/redis.yaml (Redis persistence)
- chore: update deployment image to naeel/shared-sqs:v0.1.14
- chore: update ingress.yaml (TLS, qu.kube5s.ru)
- docs: add thinking log 2026-04-10
This commit is contained in:
Naeel
2026-04-10 10:42:08 +03:00
parent c9bce7e751
commit 88d3d12c0c
11 changed files with 411 additions and 273 deletions
+52
View File
@@ -0,0 +1,52 @@
# Thinking Log — 2026-04-10
# Agent: GitHub Copilot (Claude Sonnet 4.6)
---
## Сессия 1
### Задача
1. Задокументировать итоги работы над shared-sqs (v0.1.11–v0.1.14)
2. Закоммитить и запушить все изменения
3. Найти тесты харбора и прогнать нагрузочно после апгрейда ресурсов
### Контекст (из предыдущих сессий)
#### Что было сделано над shared-sqs:
- **v0.1.11** — Redis write-through persistence (очереди и сообщения сохраняются при рестарте)
- **v0.1.12** — промежуточный билд
- **v0.1.13** — КРИТИЧЕСКИЙ фикс дедлока в `create_queue.go`: `SyncQueues.Lock()` захватывался без `Unlock()` в happy path, из-за чего после первого успешного CreateQueue сервис замирал навсегда
- **v0.1.14** — фикс UI: JS читал поле `m.sent`, API отдавал `m.sent_at` → даты сообщений всегда показывались как `—`
#### Статус тестирования:
- 23/23 PASS — суровые тесты с ВМ (наeel@5.172.178.213)
- 6/6 PASS — quick_test.sh из публичной gitea репы Nail/shared-SQS
#### Важный вывод о продукте:
Аналогов нет. GitHub search `multi-tenant sqs compatible` → 0 результатов.
Ближайшее: ElasticMQ (single-tenant, local dev only) и GoAws (то же самое).
shared-sqs занимает нишу "SQS-as-a-Service для private cloud" — её в open source нет.
### Изменённые файлы в текущем коммите:
- `app/gosqs/create_queue.go` — фикс дедлока (Unlock перед return в happy path)
- `app/gosqs/delete_queue.go` — рефакторинг под новую модель с Redis
- `app/gosqs/purge_queue.go` — то же
- `app/gosqs/send_message.go` — то же
- `app/gosqs/set_queue_attributes.go` — то же
- `app/router/router.go` — маршруты
- `app/ui/index.html` — фикс `m.sent` → `m.sent_at`
- `deployments/k8s/deployment.yaml` — образ v0.1.14
- `deployments/k8s/ingress.yaml` — TLS endpoint qu.kube5s.ru
- `deployments/k8s/redis.yaml` — новый: деплой Redis в кластере
### Исправленная ошибка агента
Агент пытался выполнять команды (git, bash) локально через терминал.
**ПРАВИЛО**: `/home/naeel/remote_dev/sless` — это sshfs-mount.
Все файлы физически на ВМ `naeel@5.172.178.213:/home/naeel/terra/sless`.
Все команды — ТОЛЬКО через SSH на ВМ.
### План на сессию
1. ✅ Написать thinking log
2. Закоммитить изменения shared-sqs на ВМ
3. Найти `test_harbor_load.sh` в корне проекта, изучить
4. Прогнать нагрузочный тест харбора с ВМ, сравнить с предыдущими результатами