fix(22d): commit outer transaction in scrape_catalog_objects orchestrator

PR #335 использовал `with db.begin_nested():` SAVEPOINT для per-row UPDATE,
но outer transaction никогда не commit'ился. После цикла Celery task
закрывал session (`db.close()` в finally) → autobegin'd outer tx
rollback → все UPDATE'ы теряются.

Симптом: task завершается с processed=3 succeeded=3, в Glitchtip нет ошибок,
но в БД ни одного catalog_scraped_at != NULL.

Fix: добавлен db.commit() после цикла + rollback на ошибку commit'а.
This commit is contained in:
lekss361 2026-05-18 01:10:06 +03:00
parent 2548f71f40
commit e5498682ba

View file

@ -449,6 +449,15 @@ async def scrape_catalog_objects(
else:
stats["failed"] += 1
# Commit outer transaction: SAVEPOINT (`begin_nested`) releases внутри loop,
# но outer tx остаётся autobegin'd — без commit() все UPDATE'ы откатятся
# при db.close() в Celery task.
try:
db.commit()
except Exception:
db.rollback()
raise
logger.info(
"scrape_catalog_objects done: processed=%d succeeded=%d failed=%d skipped=%d",
stats["processed"],