Skip to content

Commit 20604de

Browse files
authored
Merge pull request #282 from DevanshuNEU/fix/lazy-pinecone-init
HOTFIX: app starts even if Pinecone is unreachable
2 parents 4f93099 + f942f49 commit 20604de

1 file changed

Lines changed: 22 additions & 23 deletions

File tree

backend/services/indexer_optimized.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -58,30 +58,29 @@ def __init__(self):
5858
# Initialize search enhancer
5959
self.search_enhancer = SearchEnhancer(self.openai_client)
6060

61-
# Initialize Pinecone
62-
pc = Pinecone(api_key=os.getenv("PINECONE_API_KEY"))
63-
64-
index_name = os.getenv("PINECONE_INDEX_NAME", "codeintel")
65-
66-
# Check if index exists and has correct dimensions
67-
existing_indexes = pc.list_indexes().names()
68-
if index_name in existing_indexes:
69-
# Use existing index (dimension already set)
70-
index_info = pc.describe_index(index_name)
71-
logger.info("Using existing Pinecone index", index=index_name, dimension=index_info.dimension)
72-
else:
73-
logger.info("Creating Pinecone index", index=index_name, dimension=EMBEDDING_DIMENSIONS)
74-
pc.create_index(
75-
name=index_name,
76-
dimension=EMBEDDING_DIMENSIONS,
77-
metric="cosine",
78-
spec=ServerlessSpec(
79-
cloud="aws",
80-
region="us-east-1"
61+
# Initialize Pinecone (lazy-safe: app starts even if Pinecone is unreachable)
62+
self.index = None
63+
self._pinecone_index_name = os.getenv("PINECONE_INDEX_NAME", "codeintel")
64+
try:
65+
pc = Pinecone(api_key=os.getenv("PINECONE_API_KEY"))
66+
existing_indexes = pc.list_indexes().names()
67+
if self._pinecone_index_name in existing_indexes:
68+
index_info = pc.describe_index(self._pinecone_index_name)
69+
logger.info("Using existing Pinecone index", index=self._pinecone_index_name, dimension=index_info.dimension)
70+
else:
71+
logger.info("Creating Pinecone index", index=self._pinecone_index_name, dimension=EMBEDDING_DIMENSIONS)
72+
pc.create_index(
73+
name=self._pinecone_index_name,
74+
dimension=EMBEDDING_DIMENSIONS,
75+
metric="cosine",
76+
spec=ServerlessSpec(
77+
cloud="aws",
78+
region="us-east-1"
79+
)
8180
)
82-
)
83-
84-
self.index = pc.Index(index_name)
81+
self.index = pc.Index(self._pinecone_index_name)
82+
except Exception as e:
83+
logger.error("Pinecone initialization failed -- search/indexing unavailable until reconnect", error=str(e))
8584

8685
# Initialize tree-sitter parsers
8786
self.parsers = {

0 commit comments

Comments
 (0)