fix(generator): исключено смешение миров при запуске

- Зачем:
  - старый state и ручной live-генератор могли тихо писать события в новый мир данных.
- Что:
  - добавлена общая проверка чистого стенда для Airflow и host-путей.
  - защищены backfill, import, continue и clean-start сценарии live-generator.
  - описан миграционный отказ старого state.
- Проверка:
  - make generator-test; docker compose config --quiet; py_compile; bash -n.
This commit is contained in:
2026-07-05 20:21:13 +03:00
parent 525bd8cabf
commit 080d5ae313
17 changed files with 464 additions and 45 deletions
+16 -1
View File
@@ -31,6 +31,7 @@ from clickstream_generator.startup_history_artifact import (
generation_settings_from_config,
write_startup_history_artifact,
)
from clickstream_generator.state import UnsupportedStateVersionError
logger = logging.getLogger("generator")
@@ -98,7 +99,21 @@ class GeneratorService:
return
if not self.config.state_reset:
restored_state = self.state_manager.load()
try:
restored_state = self.state_manager.load()
except UnsupportedStateVersionError as exc:
logger.error(
"Readable generator state uses an old format: version %s. "
"Run make clean or set GEN_STATE_RESET=true only if you "
"intentionally start a new world.",
exc.found_version,
)
raise IncompatibleStateError(
f"state version {exc.found_version} is not supported "
f"by this code version ({exc.expected_version}); "
"run make clean, or set GEN_STATE_RESET=true to start "
"a new world intentionally"
) from exc
if restored_state:
try:
self.manifest_manager = KafkaStartupHistoryManifest(