Fixed
-
[#664] Event-loop blocking paths in
SqliteVecMemoryStorage.initialize(): Two synchronous operations in the async initialization path were blocking the event loop on startup:- Pragma application in
_connect_and_load_extensionnow runs in a worker thread under_conn_lockvia_run_in_threadinstead of executing synchronously on the event loop. _initialize_hash_embedding_fallbackis now async and wraps_get_existing_db_embedding_dimensionin_run_in_thread.
The initial fix used
asyncio.to_threadbut was corrected to use_run_in_threadduring Gemini code review to ensure proper_conn_lockprotection — the sqlite-vec extension is not thread-safe andcheck_same_thread=Falseonly disables Python's thread-safety check, not the underlying C-extension safety requirement. (PR #700, closes #664) - Pragma application in
What's Unchanged
- 1,537 tests passing
- No API or behavior changes
- All storage backends unaffected
Upgrade
pip install --upgrade mcp-memory-service
# or
uv add mcp-memory-service==10.36.8Full changelog: https://github.com/doobidoo/mcp-memory-service/blob/main/CHANGELOG.md