From 3ca548ec84c8e788b9db081d4f4595946055d0a0 Mon Sep 17 00:00:00 2001 From: dolliecoder Date: Tue, 3 Feb 2026 00:58:33 +0530 Subject: [PATCH 1/3] Fix: run SentenceTransformer.encode in asyncio.to_thread to prevent event loop blocking --- backend/app/services/embedding_service/service.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/app/services/embedding_service/service.py b/backend/app/services/embedding_service/service.py index 4527c4f9..98a59c68 100644 --- a/backend/app/services/embedding_service/service.py +++ b/backend/app/services/embedding_service/service.py @@ -1,3 +1,4 @@ +import asyncio import logging import config from typing import List, Dict, Any, Optional @@ -66,6 +67,10 @@ def llm(self) -> ChatGoogleGenerativeAI: raise return self._llm + + def _encode_sync(self, *args, **kwargs): + return self.model.encode(*args, **kwargs) + async def get_embedding(self, text: str) -> List[float]: """Generate embedding for a single text input""" try: @@ -74,12 +79,14 @@ async def get_embedding(self, text: str) -> List[float]: text = [text] # Generate embeddings - embeddings = self.model.encode( + embeddings = await asyncio.to_thread( + self._encode_sync, text, convert_to_tensor=True, show_progress_bar=False ) + # Convert to standard Python list and return embedding_list = embeddings[0].cpu().tolist() logger.debug(f"Generated embedding with dimension: {len(embedding_list)}") @@ -92,13 +99,15 @@ async def get_embeddings(self, texts: List[str]) -> List[List[float]]: """Generate embeddings for multiple text inputs in batches""" try: # Generate embeddings - embeddings = self.model.encode( + embeddings = await asyncio.to_thread( + self._encode_sync, texts, convert_to_tensor=True, batch_size=MAX_BATCH_SIZE, show_progress_bar=len(texts) > 10 ) + # Convert to standard Python list embedding_list = embeddings.cpu().tolist() logger.info(f"Generated {len(embedding_list)} embeddings") From 413ca4f84793fb71c883375ba568abbbe188df6a Mon Sep 17 00:00:00 2001 From: dolliecoder Date: Tue, 3 Feb 2026 14:44:55 +0530 Subject: [PATCH 2/3] Fix: log swallowed exceptions during graph initialization --- .../database/falkor/code-graph-backend/api/graph.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/backend/app/database/falkor/code-graph-backend/api/graph.py b/backend/app/database/falkor/code-graph-backend/api/graph.py index 7c91405b..6b112c9a 100644 --- a/backend/app/database/falkor/code-graph-backend/api/graph.py +++ b/backend/app/database/falkor/code-graph-backend/api/graph.py @@ -8,6 +8,7 @@ import logging logging.basicConfig(level=logging.DEBUG, format='%(filename)s - %(asctime)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) def graph_exists(name: str): db = FalkorDB(host=os.getenv('FALKORDB_HOST', 'localhost'), @@ -53,13 +54,19 @@ def __init__(self, name: str) -> None: try: self.g.create_node_range_index("File", "name", "ext") except Exception: - pass + logger.exception( + "Failed to create node range index for File(name, ext)" + ) + # index Function using full-text search try: self.g.create_node_fulltext_index("Searchable", "name") except Exception: - pass + logger.exception( + "Failed to create fulltext index for Searchable(name)" + ) + def clone(self, clone: str) -> "Graph": """ From 388bc2f760bc8647127a62760e7c722b573c940f Mon Sep 17 00:00:00 2001 From: dolliecoder Date: Tue, 3 Feb 2026 15:34:14 +0530 Subject: [PATCH 3/3] Add missing CONTRIBUTING.md referenced in README (fix #208) --- CONTRIBUTING.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..7a3a8f9c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,16 @@ +# Contributing to DevR.AI 🚀 + +Thank you for your interest in contributing to DevR.AI! +We welcome contributions of all kinds — bug fixes, improvements, documentation, and new features. + +--- + +## 🛠 Getting Started + +1. Fork the repository +2. Clone your fork locally +3. Create and activate a virtual environment +4. Install dependencies + +```bash +pip install -r requirements.txt