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:
parent
2548f71f40
commit
e5498682ba
1 changed files with 9 additions and 0 deletions
|
|
@ -449,6 +449,15 @@ async def scrape_catalog_objects(
|
||||||
else:
|
else:
|
||||||
stats["failed"] += 1
|
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(
|
logger.info(
|
||||||
"scrape_catalog_objects done: processed=%d succeeded=%d failed=%d skipped=%d",
|
"scrape_catalog_objects done: processed=%d succeeded=%d failed=%d skipped=%d",
|
||||||
stats["processed"],
|
stats["processed"],
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue