InMemorySessionService.appendEvent recreates a deleted session
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 84/100
Piste de recherche
Commencez par InMemorySessionService.appendEvent et examinez la recherche et l’insertion dans la map des sessions présentées dans l’issue. Lisez le cas de test ciblé InMemorySessionServiceTest et comparez le comportement de Python ADK mentionné dans le rapport. Le travail est terminé lorsque l’ajout avec une référence conservée après la suppression lève SessionNotFoundException et que getSession renvoie toujours null.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
🔴 Required Information
Describe the Bug:
InMemorySessionService.appendEvent can bring a deleted session back. If code keeps a reference to a Session, deletes it through the service, and then appends an event using the old reference, appendEvent inserts that session into the internal map again.
Steps to Reproduce:
- Create an
InMemorySessionServiceand a session. - Delete the session.
- Call
appendEventwith the retainedSessionobject. - Fetch the deleted session again.
Expected Behavior:
The append should fail because the session no longer exists, and the session should remain deleted. SessionNotFoundException seems like the natural error here.
Observed Behavior:
The append succeeds, and getSession returns the previously deleted session again.
appendEvent currently ends with:
sessions
.computeIfAbsent(appName, unused -> new ConcurrentHashMap<>())
.computeIfAbsent(userId, unused -> new ConcurrentHashMap<>())
.put(sessionId, session);
so all three missing levels are recreated.
Environment Details:
- ADK Library Version: current
mainat84bae34a9ae4c133c7e6294faff5cb50f64a3474 - OS: Ubuntu 24.04
- Java Version: OpenJDK 21.0.12.1
Model Information:
- Which model is being used: N/A
🟡 Optional Information
Regression:
Unknown.
Logs:
I added the focused test below and ran:
./mvnw -pl core -Dtest=InMemorySessionServiceTest#appendEvent_afterDelete_doesNotRecreateSession test
It fails with:
expected com.google.adk.sessions.SessionNotFoundException to be thrown, but nothing was thrown
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
Screenshots / Video:
N/A
Additional Context:
The Python ADK InMemorySessionService.append_event checks that the session ID is present and raises SessionNotFoundError before applying the event. Matching that behavior would also prevent a stale session reference from undoing a successful deletion.
Minimal Reproduction Code:
@Test
public void appendEvent_afterDelete_doesNotRecreateSession() {
InMemorySessionService sessionService = new InMemorySessionService();
Session session = sessionService.createSession("app", "user").blockingGet();
sessionService.deleteSession("app", "user", session.id()).blockingAwait();
assertThrows(
SessionNotFoundException.class,
() -> sessionService.appendEvent(session, Event.builder().build()).blockingGet());
assertThat(
sessionService.getSession("app", "user", session.id(), Optional.empty()).blockingGet())
.isNull();
}
How often has this issue occurred?:
- Always (100%)
- Langage dominant
- Java
- Étoiles
- 1.8k
- Forks
- 440
- Merge moyen
- 3 j 16 h
- PR mergées (30 j)
- 92
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de google/adk-java
-
Runner drops callbackContextData written in onUserMessageCallback when it resumes an invocationPeut-être pris @hirematha l’a pris il y a 4 jours. Ouverteneeds review
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
google/adk-java#1695 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
AgentExecutor ignores the A2A contextId when creating a session, so multi-turn conversations start over every turnPeut-être pris @hirematha l’a pris il y a 1 jour. Ouverteneeds review
google/adk-java#1718 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
McpToolset hangs silently for ~5 minutes per retry (3 retries) when stdio command is an npm shim ("npx") on WindowsPeut-être pris @hemasekhar-p l’a pris il y a 7 jours. Ouverteneeds review
google/adk-java#1686 · 4 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
runLive passes partial events to appendEvent and never aggregates text chunks, unlike ADK PythonPeut-être pris @hemasekhar-p l’a pris il y a 17 jours. Ouverteneeds review
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
google/adk-java#1648 · 3 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
FirestoreSessionService compares event timestamps as text, reordering or skipping same-second eventsPeut-être pris @hemasekhar-p l’a pris il y a 17 jours. Ouverteneeds review
Difficulté 3/5 1-2 jours Accessibilité débutants 50/100
google/adk-java#1646 · 3 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de google/adk-java
Issues similaires
-
area:core bug priority:p2
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
aomarai/minecraft-mcp#247 ·
Les mainteneurs répondent en général sous 1 jour
-
help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
antonyrag/ragleap-core#1062 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Vakore/ZappierGames#232 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
constellation-app/constellation#2588 ·