fix(ops): перезапускать worker-indexer, когда менялись парсеры
Парсеры не вшиты в образ, а смонтированы в worker-indexer, поэтому деплой их не пересобирал — и не перезапускал контейнер, раз `services/` не менялся. Но воркер держит модуль парсера в памяти с прошлого прогона: новый файл лежит в контейнере, а работает старый код. Поймано вживую на CORE: заливка после деплоя ушла ноль документов за 208 секунд, и только тело запросов в логах показало, что она всё ещё ходит по старой схеме — с огромным OR-запросом, который на глубоком смещении трижды упал по таймауту. Со стороны выглядело как «источник исчерпан», и сторож чуть не выключил источник насовсем. Теперь при изменениях в `scripts/parsers/` деплой перезапускает worker-indexer — если образ и так не пересобирается на этом прогоне. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,7 @@ fi
|
||||
|
||||
REBUILD=""
|
||||
FRONTEND_CHANGED=0
|
||||
PARSERS_CHANGED=0
|
||||
if [ "$FULL" = 1 ]; then
|
||||
REBUILD="$ALL_BACKEND"
|
||||
FRONTEND_CHANGED=1
|
||||
@@ -51,6 +52,12 @@ else
|
||||
echo "$CHANGED" | grep -qE "^services/$svc/" && REBUILD="$REBUILD $svc"
|
||||
done
|
||||
echo "$CHANGED" | grep -qE '^services/frontend/' && FRONTEND_CHANGED=1
|
||||
# Парсеры не вшиты в образ, а смонтированы в worker-indexer (см. compose),
|
||||
# поэтому пересобирать нечего. Но процесс воркера держит модуль парсера в
|
||||
# памяти с прошлого прогона: без перезапуска правка молча не применяется —
|
||||
# заливка продолжает ходить по старому коду, и это не видно ниоткуда, кроме
|
||||
# тела запросов в логах. Ловилось на CORE 16.09.2026.
|
||||
echo "$CHANGED" | grep -qE '^scripts/parsers/' && PARSERS_CHANGED=1
|
||||
fi
|
||||
REBUILD="$(echo "$REBUILD" | xargs || true)"
|
||||
|
||||
@@ -111,6 +118,13 @@ echo "==> [4/6] Применение секретов к неизменивши
|
||||
# shellcheck disable=SC2086
|
||||
$COMPOSE up -d $ALL_BACKEND
|
||||
|
||||
# Правка парсера доезжает монтированием, но модуль уже загружен в память
|
||||
# воркера — перезапускаем, если образ и так не пересобирался выше.
|
||||
if [ "$PARSERS_CHANGED" = 1 ] && ! echo " $REBUILD " | grep -q " worker-indexer "; then
|
||||
echo "==> [4.5/6] Парсеры менялись — перезапуск worker-indexer"
|
||||
$COMPOSE restart worker-indexer
|
||||
fi
|
||||
|
||||
echo "==> [5/6] Миграции БД (с ретраем)"
|
||||
for i in $(seq 1 10); do
|
||||
$COMPOSE exec -T api alembic upgrade head && break
|
||||
|
||||
Reference in New Issue
Block a user