Skip to content

Commit 6eebdb8

Browse files
catlog22claude
andcommitted
fix: 修复额外的内存泄露问题
1. hybrid_search.py: 修复 _search_vector 方法中的 SQLite 连接泄露 - 使用 with 语句包装数据库连接 - 添加异常处理确保连接正确关闭 2. symbol_extractor.py: 添加上下文管理器支持 - 实现 __enter__ 和 __exit__ 方法 - 支持 with 语句自动管理资源 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 3e9a309 commit 6eebdb8

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

codex-lens/src/codexlens/indexing/symbol_extractor.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ def connect(self) -> None:
4747
self.db_conn = sqlite3.connect(str(self.db_path))
4848
self._ensure_tables()
4949

50+
def __enter__(self) -> "SymbolExtractor":
51+
"""Context manager entry: connect to database."""
52+
self.connect()
53+
return self
54+
55+
def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
56+
"""Context manager exit: close database connection."""
57+
self.close()
58+
5059
def _ensure_tables(self) -> None:
5160
"""Create symbols and relationships tables if they don't exist."""
5261
if not self.db_conn:

codex-lens/src/codexlens/search/hybrid_search.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,12 +241,15 @@ def _search_vector(
241241
try:
242242
# Check if semantic chunks table exists
243243
import sqlite3
244-
conn = sqlite3.connect(index_path)
245-
cursor = conn.execute(
246-
"SELECT name FROM sqlite_master WHERE type='table' AND name='semantic_chunks'"
247-
)
248-
has_semantic_table = cursor.fetchone() is not None
249-
conn.close()
244+
try:
245+
with sqlite3.connect(index_path) as conn:
246+
cursor = conn.execute(
247+
"SELECT name FROM sqlite_master WHERE type='table' AND name='semantic_chunks'"
248+
)
249+
has_semantic_table = cursor.fetchone() is not None
250+
except sqlite3.Error as e:
251+
self.logger.error("Database check failed in vector search: %s", e)
252+
return []
250253

251254
if not has_semantic_table:
252255
self.logger.info(

0 commit comments

Comments
 (0)