- Зачем:
- make bookings-generate-day зависал на 35+ мин в WHILE busy() LOOP при BOOKINGS_JOBS=2,
а VACUUM ANALYZE всей БД внутри process_queue() добавлял минуты к каждому инкременту.
- Что:
- заменён опрос busy() (pg_stat_activity) на dblink_is_busy() — прямая проверка
состояния каждого dblink-соединения, без зависимости от application_name и state.
- перед continue() удаляются VACUUM-ивенты из gen.events — они бессмысленны для +1 дня.
- Проверка:
- make bookings-init && make bookings-generate-day BOOKINGS_JOBS=2 (~5-8 мин, без зависания).
- DAG bookings_to_gp_stage: все 20 тасков success.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- генерация с нуля занимала часы, boarding_passes были пустыми, данные
пропадали после docker compose down/up.
- Что:
- обновлён demodb до коммита 866e56f, добавлен патч install_connstr_no_hardcode.
- BOOKINGS_INIT_DAYS увеличен до 60, BOOKINGS_JOBS по умолчанию 2.
- добавлен seed-дамп bookings/seed/demo.sql.xz (42 MB, xz вместо 7z).
- make bookings-init восстанавливает из дампа (~18 сек) и применяет GUC из .env.
- make bookings-generate — генерация с нуля для разработчиков.
- generate_next_day.sql: COMMIT после continue(), pg_sleep(3) для jobs>1, synchronous_commit=on + CHECKPOINT.
- bookings-check-jobs: добавлена валидация нечисловых значений BOOKINGS_JOBS.
- bookings-init теперь вызывает bookings-check-jobs как prerequisite.
- синхронизированы внутренние документы (коммит demodb, init_days=60).
- Проверка:
- make bookings-init && make bookings-generate-day BOOKINGS_JOBS=2.
- make test.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- исключить нестабильные режимы генератора, в которых bookings может перестать пополняться.
- сделать причину ошибки понятной студенту сразу при запуске команд и SQL-скриптов.
- Что:
- добавлен precheck `bookings-check-jobs` в Makefile и подключён к `bookings-init` и `bookings-generate-day`.
- добавлены явные проверки `bookings.jobs = 1` в `bookings/generate_next_day.sql` и `sql/src/bookings_generate_day_if_missing.sql`.
- обновлена документация и `.env.example`: зафиксировано, что в стенде поддерживается только `BOOKINGS_JOBS=1`.
- Проверка:
- uv run make fmt.
- uv run make test.
- env BOOKINGS_JOBS=2 make bookings-init.
- env BOOKINGS_JOBS=2 make bookings-generate-day.
- make bookings-init.
- make bookings-generate-day.
- Зачем:
- предыдущий фикс ломал make bookings-init из-за невалидного SQL в Makefile.
- Что:
- удалены SQL-блоки постобработки reference-данных и cume_dist из bookings-init.
- удалён случайно добавленный gitlink _vendor/demodb.
- удалён SET LOCAL application_name из generate_next_day.sql.
- Проверка:
- uv run make fmt.
- uv run make test.
- make bookings-init.
- make bookings-generate-day.
- Зачем:
- генератор demodb зависал при jobs=1 из-за самоблокировки busy()
- get_passenger_name() попадал в бесконечный цикл из-за NULL в cume_dist
- Что:
- добавлен SET LOCAL application_name = 'psql' после вызова generate/continue
- добавлена загрузка firstnames.dat и lastnames.dat в Makefile
- добавлено заполнение cume_dist для firstnames, lastnames и airport_to_prob
- Проверка:
- make bookings-generate-day выполняется успешно, создаётся ~45K бронирований