fix: use sync get_state() for SqliteSaver compatibility (#519)

SqliteSaver does not support async methods like aget_state().
Use asyncio.to_thread() to run the sync get_state() call from
async context, maintaining compatibility with the existing
sync graph invocations.

Closes #509
This commit is contained in:
Luis Novo 2026-01-31 19:25:11 -03:00 committed by GitHub
parent c4ed1b18ec
commit 98eb6ed202
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,11 +1,16 @@
import asyncio
from langchain_core.runnables import RunnableConfig
from loguru import logger
async def get_session_message_count(graph, session_id: str) -> int:
"""Get message count from LangGraph state, returns 0 on error."""
try:
thread_state = await graph.aget_state( # async version
config=RunnableConfig(configurable={"thread_id": session_id})
# Use sync get_state() in a thread (SqliteSaver doesn't support async)
thread_state = await asyncio.to_thread(
graph.get_state,
config=RunnableConfig(configurable={"thread_id": session_id}),
)
if (
thread_state