From 567e82ddf510d3429a6ca3a382aaf14f637645ac Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Tue, 17 Mar 2026 14:34:44 +0100 Subject: [PATCH] Fix stale DB session after long embedding pre-load The embedding pre-load for 4998 existing controls takes ~16 minutes, causing the SQLAlchemy session to become invalid. Added rollback after pre-load completes to reset the session before subsequent DB operations. Co-Authored-By: Claude Opus 4.6 --- backend-compliance/compliance/services/control_generator.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend-compliance/compliance/services/control_generator.py b/backend-compliance/compliance/services/control_generator.py index 2b43ae8..43dbdb0 100644 --- a/backend-compliance/compliance/services/control_generator.py +++ b/backend-compliance/compliance/services/control_generator.py @@ -1391,6 +1391,12 @@ Gib ein JSON-Array zurueck mit GENAU {len(chunks)} Objekten. Jedes Objekt hat di loaded = sum(1 for emb in embeddings if emb) logger.info("Pre-loaded %d/%d embeddings", loaded, len(texts)) + # Reset DB session after long-running embedding operation to avoid stale connections + try: + self.db.rollback() + except Exception: + pass + def _load_existing_controls(self) -> list[dict]: """Load existing controls from DB (cached per pipeline run).""" if self._existing_controls is not None: