Fix remaining nested session issues in training pipeline

Issues Fixed:

4️⃣ data_processor.py (Line 230-232):
- Second update_log_progress call without commit after data preparation
- Added commit() after completion update to prevent deadlock
- Added debug logging for visibility

5️⃣ prophet_manager.py _store_model (Line 750):
- Created TRIPLE nested session (training_service → trainer → lock → _store_model)
- Refactored _store_model to accept optional session parameter
- Uses parent session from lock context instead of creating new one
- Updated call site to pass db_session parameter

Complete Session Hierarchy After All Fixes:
training_service.py (session)
  └─ commit() ← FIX #2 (e585e9f)
  └─ trainer.py (new session)  OK
      └─ data_processor.py (new session)
          └─ commit() after first update ← FIX #3 (b2de56e)
          └─ commit() after second update ← FIX #4 (THIS)
      └─ prophet_manager.train_bakery_model (uses parent or new session) ← FIX #1 (caff497)
          └─ lock.acquire(session)
              └─ _store_model(session=parent) ← FIX #5 (THIS)
                  └─ NO NESTED SESSION 

All nested session deadlocks in training path are now resolved.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Urtzi Alfaro
2025-11-05 16:41:53 +01:00
parent b2de56ead3
commit fd0a96e254
2 changed files with 80 additions and 62 deletions

View File

@@ -230,7 +230,11 @@ class EnhancedBakeryDataProcessor:
await repos['training_log'].update_log_progress(
job_id, 25, f"data_prepared_{inventory_product_id}", "running"
)
# ✅ FIX: Commit after final progress update to prevent deadlock
await db_session.commit()
logger.debug("Committed session after data preparation completion",
inventory_product_id=inventory_product_id)
except Exception as e:
logger.warning("Failed to store processing metadata",
error=str(e))