Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

InMemoryMemoryService loses sessionless memories when a session ID equals its fallback bucket name

Abierto Apto para principiantes
#7,711 1 comentario 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 4 días

@llalitkumarrr ya está trabajando en esto.

Desde el 25/10/2026.

  • #7752 de @tonmoy-y — cerrado sin fusionar
  • #7753 de @tonmoy-y — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend

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:

  1. Add an event without a session ID and confirm it is searchable.
  2. Create an empty session with ID __unknown_session_id__ through InMemorySessionService.
  3. 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 main at 12c7bed7661ccf942f0f6d3b62bed22a23ea0a85.
  • 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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de google/adk-python

Todos los issues de google/adk-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.