Commit Graph
35 Commits
Author SHA1 Message Date
Repinoid d8bdea75f3 doc: разбор применимости обхода drhider к SQS (прокси на ВМ, pull вместо push)
- почему схему 1:1 скопировать нельзя (клиенты на AWS SDK, синхронный протокол) ->
  аналог: прозрачный прокси на ВМ;
- условия: сохранение Host для SigV4 (auth_middleware.go:315-317), внешние QueueUrl
  (сейчас http://region.host:port из goaws.yaml, tenant_helpers.go:29-37),
  TLS, доступ ВМ->кластер, отключение буферизации;
- 4 варианта с оценкой (прокси / настройки ingress / MTU / ретраи) и таблица
  'что какой лечит';
- обязательные замеры до решения (раздел 5) и открытые вопросы.
2026-10-08 16:51:45 +03:00
Repinoid a1d72b61d4 doc: находки — как та же сетевая болезнь платформы обойдена в drhider (буфер на ВМ, pull вместо push)
Собраны и проверены по источникам все факты из ~/nubes/drhider:
- диагноз: ingress рвёт входящие тела >64КБ, egress не ограничен;
- схема пофайлового транзита через ВМ-буфер + egress-GET (pull);
- применённые фиксы платформы (cilium mtu:1400, keep-alive 10->75,
  proxy-body-size 1024m, HTTP/2 off) через ShturvalServiceConfig;
- ложные следы, лимиты, SSRF/path-traversal защиты, тесты 25/25;
- вывод: тикет в поддержку — не решение, нужен архитектурный обход.
2026-10-08 16:50:36 +03:00
Repinoid f96649b14e doc: P1.2 сделан — результаты, найденный дефект (утечка per-queue блокировки) и прогоны тестов 2026-10-07 08:27:10 +03:00
Repinoid e735563a04 doc(P1.2): дизайн индексации сообщений (tombstone + индексы + амортизированная компакция) 2026-10-07 07:56:56 +03:00
Repinoid d53aadecfa doc: P1.2 отложен с обоснованием (после P1.1 O(N) ограничен одной очередью) 2026-10-06 18:59:57 +03:00
Repinoid fd8ffc329d P1.1: per-queue блокировки вместо глобального лока на операции с очередью
Все операции с содержимым очереди (send/receive/delete/visibility/purge/attributes/
tags/admin/gauge/tick) переведены на per-queue RWMutex (QueueStore.GetLocked/
GetRLocked + queue.LockMu). Глобальный SyncQueues-лок остался только для map и
неизменяемых полей. DLQ-переносы берут лок DLQ отдельно (порядок main→DLQ).
marshalQueueMeta больше не мутирует очередь (DTO-снапшот). Устранён дедлок
create_queue (setQueueAttributesV1 вызывается вне глобального лока). Добавлены
конкурентные тесты; go test -race зелёный. Снимает боттлнек: синхронный Redis-I/O
больше не держит глобальный лок.
2026-10-06 18:58:16 +03:00
Repinoid ed17c6cbd0 P1.1 groundwork: per-queue mutex в Queue + анализ блокеров
Добавлены поле mu (не сериализуется) и LockMu/RLockMu-аксессоры в models.Queue;
исправлено копирование Queue by value (numberOfHiddenMessagesInQueue).
Глобальный лок пока используется везде — поведение не менялось.
Задокументированы блокеры полного перехода (DLQ-указатель, мутирующий
marshalQueueMeta, релинк DLQ после загрузки, атомарность перевода).
2026-10-06 18:39:26 +03:00
Repinoid ac06572e25 doc: находка — унаследованные Go-тесты gosqs мёртвые (несовместимы с форком)
Тесты требуют тенанта из контекста и tenant-scoped ключей, а написаны под
дофорковый GoAws. Восстановление app/fixtures + app/test сделает их
компилируемыми, но падающими. Нужны новые тесты под мультитенантное поведение.
2026-10-06 18:07:31 +03:00
Repinoid 6e96a4d007 doc(sqs): подробный план доработок P0/P1/P2 для DeepSeek Flash 2026-10-05 21:38:03 +03:00
Repinoid 9528441c97 doc(sqs): мой критический анализ отчёта Opus (перепроверка по коду) 2026-10-05 21:38:03 +03:00
Repinoid e8ccd8bae1 doc(sqs): промпт для Opus (allowlist файлов) + его отчёт КРАКО и план 2026-10-05 21:38:03 +03:00
“Naeel” 7897fda9e7 doc: тикет — дополнение: таймера 31с внутри кластера нет, он на внешнем шлюзе 2026-08-15 21:28:55 +04:00
“Naeel” 96f6d64184 doc: черновик тикета в Nubes (явления A/B, 6 доказательств); все фазы плана выполнены 2026-08-15 21:17:17 +04:00
“Naeel” 5c2180d40e doc: финал плана (решения зафиксированы) + сравнение четырёх агентов 2026-08-15 15:05:12 +04:00
“Naeel” cd7f5a7d5a doc: план v4 от Опуса 4.8 + ответы на уточнения (нет второго ISP, NET_RAW вряд ли, echo отложить) 2026-08-15 15:03:33 +04:00
“Naeel” 5f6c0a5bf7 doc: план v3 от Соннета — разделение явлений A/B, port-forward первым; принят за основу 2026-08-15 14:56:13 +04:00
“Naeel” b91f21a50d doc: план v2 от DeepSeek V4 Pro (новый чат) — стратегия изоляции слоёв; сравнение с Flash 2026-08-15 14:50:02 +04:00
“Naeel” bd63c04ea3 doc: план сетевых экспериментов от DeepSeek V4 Flash (не Соннет) с поправками — nubes-network-bug-plan 2026-08-15 14:41:53 +04:00
“Naeel” ae338d2b4a chore: переместить исторические doc в doc/legacy, удалить tests и пустые легаси-папки 2026-08-13 22:03:08 +04:00
Naeel de033a1830 chore: миграция на Nubes Managed — правила, README, registry Gitea, легаси помечено 2026-08-13 20:42:18 +03:00
Naeel 2d1880b54c feat: Helm chart для shared-sqs deployment + thinking logs 2026-04-13 18:50:28 +03:00
Naeel e0ceec7909 doc: update progress and thinking log for v0.1.23-v0.1.24 (billing + metrics) 2026-04-12 12:10:28 +03:00
Naeel dbcd8b1921 feat: billing — usage tracking per SQS operation in PostgreSQL
- New package app/billing: Init/RecordUsage/Close with auto-migrate
- Integration in actionHandler: record tenant_id, operation, msg_count, msg_bytes
- Helm chart: billing section in values.yaml, secret-billing.yaml, env vars in deployment
- Optional: billing disabled by default (BILLING_PG_HOST not set = no-op)
- Table: sqs_usage_records with index on (tenant_id, recorded_at)
2026-04-12 11:51:27 +03:00
Naeel d1af612b48 Deploy shared-sqs v0.1.22 2026-04-12 10:08:00 +03:00
Naeel d7e9d90453 Add demo UI showcase mode 2026-04-12 09:58:32 +03:00
Naeel d5d3519836 docs: add 32kb benchmark comparison 2026-04-12 08:44:11 +03:00
Naeel 70cfc0d83d docs: add references for 64kb investigation 2026-04-12 08:02:37 +03:00
Naeel a1ff9c4e52 docs: finalize 64kb ingress investigation 2026-04-12 07:59:04 +03:00
Naeel c580101f0c doc: анализ деградации на больших payload (3 root causes)
- json.Marshal(queue) сериализует ВСЕ сообщения под Lock — O(N*msg_size)
- log.Infof логирует полное тело каждого сообщения (256KB на запись)
- CPU limit 500m вызывает K8s CFS throttling на тяжёлых операциях
- PeriodicTasks держит глобальный Lock каждую секунду
- Баг: MessageDoesNotExist возвращает Code=QueueExists
2026-04-11 20:19:28 +03:00
Naeel b181b7ef0b test: compare_sqs.sh benchmark Yandex MQ vs shared-sqs + thinking log 2026-04-11 19:46:01 +03:00
Naeel f618f02e76 doc: stress testing report, progress update, thinking log — v0.1.19 assessment 2026-04-11 19:15:57 +03:00
Naeel fbecde72eb feat: add 4 missing SQS API commands for Yandex/AWS compatibility
- ChangeMessageVisibilityBatch: batch visibility timeout (up to 10 msgs)
- TagQueue: add/update queue tags
- UntagQueue: remove queue tags by keys
- ListQueueTags: list all queue tags
- Added Tags field to Queue struct
- Request/Response models for all 4 commands
- Registered in router (17 total API commands now)
- Yandex Message Queue API reference doc
2026-04-11 07:51:17 +03:00
Naeel c9d9231efc docs: record compatibility runs, decisions and session reasoning 2026-04-10 20:27:59 +03:00
Naeel b9d434bcc5 v0.1.16: JWT auth via nubes API, auto-provisioning, UI login
- app/auth/jwt.go: ParseJWTClaims, TenantIDFromSub (sless-compatible SHA256), PingNubesAPI
- app/admin/admin.go: POST /ui/api/auth endpoint, jwtMiddleware for /ui/api/*
- app/tenant/tenant_store.go: NubesSub/Email fields, GetBySub, CreateFromJWT
- app/ui/index.html: login page, email in navbar, JWT session in localStorage
- deployments/k8s/deployment.yaml: v0.1.16, NUBES_ENDPOINT env
- doc/decisions/resource-limits-plan.md: 20 vulnerabilities audit
- Fix: /ui/api/auth moved to subrouter (gorilla/mux PathPrefix conflict)
2026-04-10 18:35:19 +03:00
Naeel c3ba2dcae4 chore: initial import from sless/shared-sqs (v0.1.14)
- Standalone SQS-service repository
- Multi-tenant message queue service, AWS SQS compatible
- Based on GoAws, with mutable tenants, auth, WebUI, Redis persistence
- Ready for independent development and deployment
- See doc/ and README.md for architecture and usage
2026-04-10 16:47:27 +03:00