From 9c1cabc6ddae0d501d6d853816ca4968012aaf08 Mon Sep 17 00:00:00 2001 From: tanii1125 Date: Thu, 25 Dec 2025 16:06:39 +0530 Subject: [PATCH 1/3] Added_logs_to_#193 --- .../app/services/embedding_service/service.py | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/backend/app/services/embedding_service/service.py b/backend/app/services/embedding_service/service.py index 4527c4f9..47ec13aa 100644 --- a/backend/app/services/embedding_service/service.py +++ b/backend/app/services/embedding_service/service.py @@ -34,20 +34,54 @@ def __init__(self, model_name: str = MODEL_NAME, device: str = EMBEDDING_DEVICE) self.device = device self._model = None self._llm = None + self._model_loading = False + self._model_access_count = 0 logger.info(f"Initializing EmbeddingService with model: {model_name} on device: {device}") @property def model(self) -> SentenceTransformer: + ## track how often model is accessed + self._model_access_count+=1 + logger.debug( + f"EmbeddingService.model accessed " + f"(access count={self._model_access_count}), " + f"model_loaded={self._model is not None})" + ) + """Lazy-load embedding model to avoid loading during import""" if self._model is None: + # Detect concurrent initialization attempts (observability only) + if self._model_loading: + logger.warning( + "Concurrent access detected while embedding model is initializing. " + "This may indicate a race condition." + ) + + self._model_loading = True try: - logger.info(f"Loading embedding model: {self.model_name}") + logger.info( + f"No cached embedding model found. " + f"Initializing model '{self.model_name}' on device '{self.device}'." + ) self._model = SentenceTransformer(self.model_name, device=self.device) + logger.info( - f"Model loaded successfully. Embedding dimension: {self._model.get_sentence_embedding_dimension()}") + f"Embedding model initialized successfully. " + f"Embedding dimension: {self._model.get_sentence_embedding_dimension()}" + ) except Exception as e: - logger.error(f"Error loading model {self.model_name}: {str(e)}") + logger.error(f"Error loading model {self.model_name}: {str(e)}", + exc_info=True + ) raise + finally: + self._model_loading = False + else: + # Explicit reuse log (this was missing earlier) + logger.debug( + "Reusing existing embedding model instance from cache." + ) + return self._model @property From 5d699528397216c446b033b07b59b442e4160b31 Mon Sep 17 00:00:00 2001 From: tanii1125 Date: Thu, 25 Dec 2025 16:21:25 +0530 Subject: [PATCH 2/3] improved Formatting --- backend/app/services/embedding_service/service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/app/services/embedding_service/service.py b/backend/app/services/embedding_service/service.py index 47ec13aa..c4fcd446 100644 --- a/backend/app/services/embedding_service/service.py +++ b/backend/app/services/embedding_service/service.py @@ -45,7 +45,7 @@ def model(self) -> SentenceTransformer: logger.debug( f"EmbeddingService.model accessed " f"(access count={self._model_access_count}), " - f"model_loaded={self._model is not None})" + f"model_loaded={self._model is not None}" ) """Lazy-load embedding model to avoid loading during import""" From a4a0f722d76318257c6d18e279df4e68cd8b3318 Mon Sep 17 00:00:00 2001 From: tanii1125 Date: Thu, 25 Dec 2025 16:26:57 +0530 Subject: [PATCH 3/3] improved Formatting --- backend/app/services/embedding_service/service.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/app/services/embedding_service/service.py b/backend/app/services/embedding_service/service.py index c4fcd446..3fb144f8 100644 --- a/backend/app/services/embedding_service/service.py +++ b/backend/app/services/embedding_service/service.py @@ -44,8 +44,8 @@ def model(self) -> SentenceTransformer: self._model_access_count+=1 logger.debug( f"EmbeddingService.model accessed " - f"(access count={self._model_access_count}), " - f"model_loaded={self._model is not None}" + f"(access count={self._model_access_count}, " + f"model_loaded={self._model is not None})" ) """Lazy-load embedding model to avoid loading during import"""