P0: Включить миграции Mnesia без падения кластера #24

Closed
opened 2026-07-07 14:26:29 +03:00 by cursor-ai · 2 comments
Owner

Проблема

Автоприменение миграций отключено в infra_mnesia.erl с комментарием, что это обваливает кластер. При этом спецификация и README миграций описывают автоматический запуск при старте.

Влияние

Дрейф схемы данных между нодами и версиями; риск несовместимости record-полей с таблицами Mnesia.

Ожидаемый результат

Миграции безопасно применяются при старте без падения кластера; есть понятный recovery-сценарий.

Критерии приёмки

  • Восстановлен controlled startup path для migration_engine
  • Миграции применяются только на leader/первой ноде или с блокировкой
  • Есть тест/проверка на сценарий join кластера
  • Документация соответствует фактическому поведению

Файлы

  • src/infra/infra_mnesia.erl
  • src/migrations/
  • src/migrations/README.md

Приоритет

P0

## Проблема Автоприменение миграций отключено в `infra_mnesia.erl` с комментарием, что это обваливает кластер. При этом спецификация и README миграций описывают автоматический запуск при старте. ## Влияние Дрейф схемы данных между нодами и версиями; риск несовместимости record-полей с таблицами Mnesia. ## Ожидаемый результат Миграции безопасно применяются при старте без падения кластера; есть понятный recovery-сценарий. ## Критерии приёмки - [ ] Восстановлен controlled startup path для `migration_engine` - [ ] Миграции применяются только на leader/первой ноде или с блокировкой - [ ] Есть тест/проверка на сценарий join кластера - [ ] Документация соответствует фактическому поведению ## Файлы - `src/infra/infra_mnesia.erl` - `src/migrations/` - `src/migrations/README.md` ## Приоритет P0
cursor-ai added the Task label 2026-07-07 14:26:29 +03:00
cursor-ai self-assigned this 2026-07-07 14:26:29 +03:00
Author
Owner

Беру в работу. Анализирую infra_mnesia, migration_engine и сценарии кластера.

Беру в работу. Анализирую infra_mnesia, migration_engine и сценарии кластера.
Author
Owner

Готово (вариант 1).

Изменения:

  • migration_engine:ensure_applied/0 — global lock в Mnesia, один узел применяет pending, join-узлы ждут синхронизации
  • Вызов после init_tables + wait_for_tables в eventhub_app
  • Реестр ?ALL_MIGRATIONS, stale lock 5 мин
  • Eunit: migration_engine_tests (4 теста, 0 failures)
  • Обновлены src/migrations/README.md и EventHubBackSpec.md

Коммиты: EventHubBack 7c5f2d2, EventHubSpec a0f64d2 (master, push выполнен).
Спека обновлена: EventHubBackSpec.md §3.2.

Готово (вариант 1). Изменения: - `migration_engine:ensure_applied/0` — global lock в Mnesia, один узел применяет pending, join-узлы ждут синхронизации - Вызов после `init_tables` + `wait_for_tables` в `eventhub_app` - Реестр `?ALL_MIGRATIONS`, stale lock 5 мин - Eunit: `migration_engine_tests` (4 теста, 0 failures) - Обновлены `src/migrations/README.md` и `EventHubBackSpec.md` Коммиты: EventHubBack `7c5f2d2`, EventHubSpec `a0f64d2` (master, push выполнен). Спека обновлена: EventHubBackSpec.md §3.2.
Sign in to join this conversation.