InMemoryMemoryService loses sessionless memories when a session ID equals its fallback bucket name
Los mantenedores suelen responder en 4 días
@llalitkumarrr ya está trabajando en esto.
Desde el 25/10/2026.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
Línea de trabajo
Empieza leyendo InMemoryMemoryService.add_events_to_memory() y add_session_to_memory(). Después, compara cómo gestiona cada uno los ID de sesión en google/adk/memory/in_memory_memory_service.py. Reproduce la colisión con la secuencia proporcionada y revisa las pruebas existentes del memory service. El trabajo estará terminado cuando añadir una sesión cuyo ID sea __unknown_session_id__ conserve las memorias añadidas sin ID de sesión.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Required Information
Describe the Bug:
InMemoryMemoryService.add_events_to_memory() maps an omitted session ID to the string __unknown_session_id__. InMemorySessionService also accepts that literal as an ordinary session ID. Passing that session to add_session_to_memory() replaces the same bucket, silently removing previously added sessionless memories.
Steps to Reproduce:
- Add an event without a session ID and confirm it is searchable.
- Create an empty session with ID
__unknown_session_id__throughInMemorySessionService. - Add that session to memory and search again using the code below.
Expected Behavior:
Adding an unrelated empty session should preserve existing sessionless memories, as it does with ordinary-session.
Observed Behavior:
ordinary-session: before=1, after=1
__unknown_session_id__: before=1, after=0
Environment Details:
- ADK: source checkout of
mainat12c7bed7661ccf942f0f6d3b62bed22a23ea0a85. - Desktop OS: macOS, arm64.
- Python: 3.13.16.
Model Information:
- LiteLLM: No.
- Model: N/A; local memory/session services only.
Optional Information
Regression: Unknown; reproduced on current main.
Minimal Reproduction Code:
import asyncio
from google.adk.events import Event
from google.adk.memory.in_memory_memory_service import InMemoryMemoryService
from google.adk.sessions.in_memory_session_service import InMemorySessionService
from google.genai import types
async def run(session_id):
memory = InMemoryMemoryService()
await memory.add_events_to_memory(
app_name="app", user_id="user",
events=[Event(author="user", content=types.Content(
parts=[types.Part(text="saffron")]))],
)
before = len((await memory.search_memory(
app_name="app", user_id="user", query="saffron")).memories)
session = await InMemorySessionService().create_session(
app_name="app", user_id="user", session_id=session_id)
await memory.add_session_to_memory(session)
after = len((await memory.search_memory(
app_name="app", user_id="user", query="saffron")).memories)
print(f"{session_id}: before={before}, after={after}")
async def main():
await run("ordinary-session")
await run("__unknown_session_id__")
asyncio.run(main())
How often: Always for the sequence above.
Additional Context: This uses only public service methods, with no internal state mutation. The collision is within one app/user scope. The fallback bucket needs an identity that cannot alias a caller-provided session ID. No fix is included in this report.
- Lenguaje dominante
- Python
- Estrellas
- 22k
- Forks
- 4.2k
- Merge medio
- 3 d 21 h
- PR fusionados (30 d)
- 6
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de google/adk-python
-
LiteLlm with SSE streaming records the answer twice in gen_ai.output.messagesPosiblemente ocupada @surajksharma07 la tomó hace 4 días. Abiertomodels
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
google/adk-python#7630 · 11 comentarios · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
Update opentelemetry-api and opentelemetry-sdk to < 2 (Updated)Posiblemente ocupada @llalitkumarrr la tomó hace 18 días. Abiertorequest clarification tracing
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
google/adk-python#7433 · 5 comentarios · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
CI Mypy Check flags an existing streaming_utils.py error as new because the PR run reuses the baseline's mypy cachePosiblemente ocupada @DeanChensj la tomó hace 20 días. Abiertoneeds review
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
google/adk-python#7409 · 1 comentario · 2 asignados ·
Los mantenedores suelen responder en 4 días
-
A2aAgentExecutor sends the raw exception text to the A2A caller when the run failsPosiblemente ocupada @sanketpatil06 la tomó hace 21 días. Abiertoa2a request clarification
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
google/adk-python#7385 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
Please support mermaid 12 (inbuild elk) in `adk web`Posiblemente ocupada @sanketpatil06 la tomó hace 21 días. Abiertoneeds review web
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
google/adk-python#7381 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 4 días
Todos los issues de google/adk-python
Issues similares
-
Link Checker ReportAbiertoautomated issue linkchecker report
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
QuantEcon/lecture-python.myst#1098 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
[Bug]: Processing errors missing from Docker logs due to incorrect console-handler detectionAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
podly-pure-podcasts/podly_pure_podcasts#279 ·
Los mantenedores suelen responder en 1 día
-
New template proposal: ljpAbiertotemplate-proposal
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
OpenShot/openshot-qt#6230 ·
Los mantenedores suelen responder en 1 día