fix: agent-core test failures in session_manager and message_bus
- session_manager: add session to _local_cache in create_session() so get_session() and get_active_sessions() work without Redis/Postgres - message_bus: use asyncio.create_task() in request() for publish so handler runs concurrently and timeout actually fires All 76 tests pass now. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -345,11 +345,19 @@ class MessageBus:
|
|||||||
self._pending_responses[message.correlation_id] = future
|
self._pending_responses[message.correlation_id] = future
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Publish the request
|
# Publish as task so handler runs concurrently (enables timeout)
|
||||||
await self.publish(message)
|
publish_task = asyncio.create_task(self.publish(message))
|
||||||
|
|
||||||
# Wait for response
|
# Wait for response with timeout
|
||||||
return await asyncio.wait_for(future, timeout)
|
try:
|
||||||
|
return await asyncio.wait_for(future, timeout)
|
||||||
|
finally:
|
||||||
|
if not publish_task.done():
|
||||||
|
publish_task.cancel()
|
||||||
|
try:
|
||||||
|
await publish_task
|
||||||
|
except (asyncio.CancelledError, Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
|
|||||||
@@ -250,6 +250,7 @@ class SessionManager:
|
|||||||
"user_id": user_id
|
"user_id": user_id
|
||||||
})
|
})
|
||||||
|
|
||||||
|
self._local_cache[session.session_id] = session
|
||||||
await self._persist_session(session)
|
await self._persist_session(session)
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
@@ -302,6 +303,7 @@ class SessionManager:
|
|||||||
"""
|
"""
|
||||||
session.heartbeat()
|
session.heartbeat()
|
||||||
self._local_cache[session.session_id] = session
|
self._local_cache[session.session_id] = session
|
||||||
|
self._local_cache[session.session_id] = session
|
||||||
await self._persist_session(session)
|
await self._persist_session(session)
|
||||||
|
|
||||||
async def delete_session(self, session_id: str) -> bool:
|
async def delete_session(self, session_id: str) -> bool:
|
||||||
|
|||||||
Reference in New Issue
Block a user