InMemoryMemoryService loses sessionless memories when a session ID equals its fallback bucket name
I maintainer di solito rispondono entro 4 giorni
@llalitkumarrr ci sta già lavorando.
Dal 25/10/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
Direzione di ricerca
Inizia leggendo InMemoryMemoryService.add_events_to_memory() e add_session_to_memory(), poi confronta come ciascuno gestisce gli ID di sessione in google/adk/memory/in_memory_memory_service.py. Riproduci la collisione con la sequenza fornita e controlla i test esistenti del memory service. Il lavoro è completato quando l’aggiunta di una sessione il cui ID è __unknown_session_id__ preserva le memorie aggiunte senza un ID di sessione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Python
- Stelle
- 22k
- Fork
- 4.2k
- Merge medio
- 3g 21h
- PR unite (30g)
- 6
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di google/adk-python
-
LiteLlm with SSE streaming records the answer twice in gen_ai.output.messagesForse già presa @surajksharma07 l’ha presa 5 giorni fa. Apertamodels
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
google/adk-python#7630 · 11 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
Update opentelemetry-api and opentelemetry-sdk to < 2 (Updated)Forse già presa @llalitkumarrr l’ha presa 19 giorni fa. Apertarequest clarification tracing
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
google/adk-python#7433 · 5 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
CI Mypy Check flags an existing streaming_utils.py error as new because the PR run reuses the baseline's mypy cacheForse già presa @DeanChensj l’ha presa 21 giorni fa. Apertaneeds review
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
google/adk-python#7409 · 1 commento · 2 assegnatari ·
I maintainer di solito rispondono entro 4 giorni
-
A2aAgentExecutor sends the raw exception text to the A2A caller when the run failsForse già presa @sanketpatil06 l’ha presa 22 giorni fa. Apertaa2a request clarification
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
google/adk-python#7385 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
Please support mermaid 12 (inbuild elk) in `adk web`Forse già presa @sanketpatil06 l’ha presa 22 giorni fa. Apertaneeds review web
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
google/adk-python#7381 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
Tutte le issue di google/adk-python
Issue simili
-
component:benchmark
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
agentic-os-org/ANOLISA#9177 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
distrochooser/distrochooser#520 ·
I maintainer di solito rispondono entro 2 giorni
-
Status: Needs confirmation Status: Needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
[BUG] Published Docker images lack the redis extra: HEADROOM_COMPRESS_SESSION_STORE stops startupForse già presa @AlessandroSpallina l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
headroomlabs-ai/headroom#4513 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
codespell-project/codespell#4060 ·
I maintainer di solito rispondono entro 1 giorno