[bug][migrations] develop-билд 21:48 добавляет миграцию задним числом (20260627T130000-ai-chat-runs) — kysely «corrupted migrations», прод в crash-loop (502) #361

Closed
opened 2026-07-05 00:57:18 +03:00 by agent_vscode · 1 comment
Collaborator

Суть

Свежий образ ghcr.io/vvzvlad/gitmost:develop (билд 2026-07-04 21:48 UTC, digest sha256:85b08a3a2e1ae61d18023fc8deab38df8c19bab824d6c6be33846ceb6252f786) содержит новую миграцию с таймстампом задним числом: 20260627T130000-ai-chat-runs. Kysely в ordered-режиме отказывается стартовать, приложение падает на bootstrap, контейнер в crash-loop, docs.vvzvlad.xyz отдаёт 502 (watchtower подтянул билд в 21:51 UTC).

Error: corrupted migrations: expected previously executed migration
20260702T120000-ai-chat-page-snapshot to be at index 67 but
20260627T130000-ai-chat-runs was found in its place. New migrations must
always have a name that comes alphabetically after the last executed migration.

Почему

Прод-БД уже выполнила (хвост kysely_migration по времени выполнения):

миграция выполнена
20260627T120000-share-aliases-one-per-page 2026-06-27
20260702T120000-ai-chat-page-snapshot 2026-07-02
20260703T190000-comment-suggestions 2026-07-03
20260704T120000-client-metrics 2026-07-04 21:40 (билд 21:38 отработал штатно)

Новая 20260627T130000-ai-chat-runs сортируется между уже выполненными 20260627T120000-… и 20260702T120000-… → нарушение инварианта kysely «новая миграция всегда алфавитно после последней выполненной».

Что нужно

Переименовать миграцию в актуальный таймстамп (например 20260705T090000-ai-chat-runs) и перезапушить develop. Ничего больше: прод восстановится сам — watchtower подтянет исправленный билд (интервал ~2 c), миграция выполнится как новая.

Контекст от инфры

  • Решение владельца: откат не делаем, ждём исправленный билд (см. netmap-инцидент на узле gitmost).
  • Последний рабочий билд: 21:38 UTC (в нём #355 работал: client_metrics создана, GRANT для grafana_ro миграция выдала сама, телеметрия отвечала 200).
  • После восстановления инфра продолжит закрывающий раунд приёмки метрик (VM job gitmost-app, панели, baseline).
# Суть Свежий образ `ghcr.io/vvzvlad/gitmost:develop` (билд **2026-07-04 21:48 UTC**, digest `sha256:85b08a3a2e1ae61d18023fc8deab38df8c19bab824d6c6be33846ceb6252f786`) содержит **новую миграцию с таймстампом задним числом**: `20260627T130000-ai-chat-runs`. Kysely в ordered-режиме отказывается стартовать, приложение падает на bootstrap, контейнер в crash-loop, **docs.vvzvlad.xyz отдаёт 502** (watchtower подтянул билд в 21:51 UTC). ``` Error: corrupted migrations: expected previously executed migration 20260702T120000-ai-chat-page-snapshot to be at index 67 but 20260627T130000-ai-chat-runs was found in its place. New migrations must always have a name that comes alphabetically after the last executed migration. ``` # Почему Прод-БД уже выполнила (хвост `kysely_migration` по времени выполнения): | миграция | выполнена | |---|---| | `20260627T120000-share-aliases-one-per-page` | 2026-06-27 | | `20260702T120000-ai-chat-page-snapshot` | 2026-07-02 | | `20260703T190000-comment-suggestions` | 2026-07-03 | | `20260704T120000-client-metrics` | 2026-07-04 21:40 (билд 21:38 отработал штатно) | Новая `20260627T130000-ai-chat-runs` сортируется **между** уже выполненными `20260627T120000-…` и `20260702T120000-…` → нарушение инварианта kysely «новая миграция всегда алфавитно после последней выполненной». # Что нужно Переименовать миграцию в актуальный таймстамп (например `20260705T090000-ai-chat-runs`) и перезапушить develop. Ничего больше: прод восстановится сам — watchtower подтянет исправленный билд (интервал ~2 c), миграция выполнится как новая. # Контекст от инфры - Решение владельца: **откат не делаем**, ждём исправленный билд (см. netmap-инцидент на узле gitmost). - Последний рабочий билд: 21:38 UTC (в нём #355 работал: `client_metrics` создана, GRANT для `grafana_ro` миграция выдала сама, телеметрия отвечала 200). - После восстановления инфра продолжит закрывающий раунд приёмки метрик (VM job `gitmost-app`, панели, baseline).
Author
Collaborator

Прод восстановлен: билд 22:02 UTC поднялся штатно (container restarts=0, миграции прошли), docs.vvzvlad.xyz → 200. Закрывающий раунд приёмки метрик пройден: up{job="gitmost-app"}==1, все семейства метрик на месте, виталы пишутся в client_metrics (проверено валидным синтетическим событием). Инцидент в netmap снят. Закрываю.

Прод восстановлен: билд 22:02 UTC поднялся штатно (container restarts=0, миграции прошли), docs.vvzvlad.xyz → 200. Закрывающий раунд приёмки метрик пройден: `up{job="gitmost-app"}==1`, все семейства метрик на месте, виталы пишутся в `client_metrics` (проверено валидным синтетическим событием). Инцидент в netmap снят. Закрываю.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#361