revert: PR #117 healthcheck (HOTFIX — prod down) #119

Merged
lekss361 merged 1 commit from revert/frontend-healthcheck-hotfix into main 2026-05-14 20:02:58 +00:00
lekss361 commented 2026-05-14 19:59:43 +00:00 (Migrated from github.com)

🚨 HOTFIX — Prod down after PR #117

Symptoms: Both https://gendsgn.ru и https://obsidian.gendsgn.ru отвечают Failed to connect 443 (curl 7). Deploy run #25881565825 finished with failure.

Root cause

PR #117 добавил caddy.depends_on: { backend: service_healthy, frontend: service_healthy }. Frontend healthcheck команда wget --quiet --tries=1 --spider http://localhost:3000/ не прошла в node:20-alpine standalone Next.js runner — вероятно / route отдаёт 404 (нет default route), либо start_period 30s + 5×5s = 55s не хватило для cold start standalone bundle.

Caddy с condition: service_healthy НЕ стартовал → reverse proxy не отвечает → все домены через Caddy недоступны, включая obsidian.gendsgn.ru (CouchDB через тот же Caddy + gendesign_shared network).

err: Container ***-frontend-1 Error dependency frontend failed to start
err: dependency failed to start: container ***-frontend-1 is unhealthy

Fix

Полный git revert коммита bade2f7 (PR #117). Восстанавливает:

  • frontend без healthcheck
  • caddy depends_on: [backend, frontend] (bare list — стартует когда containers running, не healthy)
  • backend/worker/beat redis service_started (was: service_healthy)
  • rosreestr2coord>=4.0.0 (was: >=5.0.0; lock сейчас 5.3.3, downgrade-allowed)

Forward fix (отдельный PR)

После hotfix-merge нужно правильно сделать healthcheck:

  1. Test командой реальноdocker exec frontend-container wget --spider http://localhost:3000/site-finder — должен вернуть 200 а не 404
  2. Возможно поднять start_period до 60-90s для standalone Next.js
  3. Caddy depends_on оставить как condition: service_started для frontend — слишком хрупкое строить proxy на frontend health; backend health достаточно

Test plan

  • CI зелёный (revert не меняет тестов)
  • Merge → deploy.yml triggers → compose up -d restores Caddycurl https://obsidian.gendsgn.ru returns 200
  • curl https://gendsgn.ru returns 200
  • Frontend container docker compose ps shows (running) (без healthcheck — running это OK)

Priority

URGENT — prod down. Merge immediately to restore service.

Reverts: bade2f7 / #117

## 🚨 HOTFIX — Prod down after PR #117 **Symptoms:** Both `https://gendsgn.ru` и `https://obsidian.gendsgn.ru` отвечают `Failed to connect 443` (curl 7). Deploy run #25881565825 finished with **failure**. ## Root cause PR #117 добавил `caddy.depends_on: { backend: service_healthy, frontend: service_healthy }`. Frontend healthcheck команда `wget --quiet --tries=1 --spider http://localhost:3000/` не прошла в `node:20-alpine` standalone Next.js runner — вероятно `/` route отдаёт 404 (нет default route), либо start_period 30s + 5×5s = 55s не хватило для cold start standalone bundle. Caddy с `condition: service_healthy` НЕ стартовал → reverse proxy не отвечает → **все домены через Caddy недоступны**, включая obsidian.gendsgn.ru (CouchDB через тот же Caddy + `gendesign_shared` network). ``` err: Container ***-frontend-1 Error dependency frontend failed to start err: dependency failed to start: container ***-frontend-1 is unhealthy ``` ## Fix Полный `git revert` коммита `bade2f7` (PR #117). Восстанавливает: - frontend без healthcheck - caddy `depends_on: [backend, frontend]` (bare list — стартует когда containers running, не healthy) - backend/worker/beat redis `service_started` (was: `service_healthy`) - `rosreestr2coord>=4.0.0` (was: `>=5.0.0`; lock сейчас 5.3.3, downgrade-allowed) ## Forward fix (отдельный PR) После hotfix-merge нужно правильно сделать healthcheck: 1. **Test командой реально** — `docker exec frontend-container wget --spider http://localhost:3000/site-finder` — должен вернуть 200 а не 404 2. **Возможно поднять `start_period` до 60-90s** для standalone Next.js 3. **Caddy depends_on оставить как `condition: service_started`** для frontend — слишком хрупкое строить proxy на frontend health; backend health достаточно ## Test plan - [x] CI зелёный (revert не меняет тестов) - [ ] **Merge → deploy.yml triggers → `compose up -d` restores Caddy** → `curl https://obsidian.gendsgn.ru` returns 200 - [ ] `curl https://gendsgn.ru` returns 200 - [ ] Frontend container `docker compose ps` shows `(running)` (без healthcheck — running это OK) ## Priority **URGENT — prod down.** Merge immediately to restore service. Reverts: bade2f7 / #117
lekss361 commented 2026-05-14 20:02:41 +00:00 (Migrated from github.com)

Bot review — URGENT HOTFIX

Чистый git revert PR #117 — без посторонних изменений. CI зелёный (backend + frontend SUCCESS). Root cause описан верно:

  • wget --spider http://localhost:3000/ на Next.js standalone возвращает 404 (нет route на /), healthcheck никогда не пройдёт
  • caddy.depends_on: service_healthy каскадно валит весь reverse proxy → obsidian.gendsgn.ru тоже мёртв (общая сеть gendesign_shared)
  • Revert корректно восстанавливает все 4 изменения (frontend healthcheck, redis service_started, caddy bare depends_on, rosreestr2coord pin)

Mea culpa за PR #117 — я аппрувнул на предположении что wget --spider / корректен для alpine/busybox, не проверив реальный response от Next.js standalone на root path. На forward-fix буду требовать docker exec wget --spider <real-route> в test plan перед аппрувом.

approve merge

## Bot review — URGENT HOTFIX ✅ Чистый `git revert` PR #117 — без посторонних изменений. CI зелёный (backend + frontend SUCCESS). Root cause описан верно: - `wget --spider http://localhost:3000/` на Next.js standalone возвращает 404 (нет route на `/`), healthcheck никогда не пройдёт - `caddy.depends_on: service_healthy` каскадно валит весь reverse proxy → obsidian.gendsgn.ru тоже мёртв (общая сеть `gendesign_shared`) - Revert корректно восстанавливает все 4 изменения (frontend healthcheck, redis service_started, caddy bare depends_on, rosreestr2coord pin) **Mea culpa** за PR #117 — я аппрувнул на предположении что `wget --spider /` корректен для alpine/busybox, не проверив реальный response от Next.js standalone на root path. На forward-fix буду требовать `docker exec wget --spider <real-route>` в test plan перед аппрувом. approve merge
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#119
No description provided.