Conversation
… empty parent maps
When deleteSession() removes the last session for a userId, the now-empty
userId map remained in the parent appName map. Similarly, if all users under
an appName were deleted, the empty appName map remained in the top-level
sessions map. This caused linear memory growth with the number of unique
users/apps, eventually leading to OutOfMemoryError.
Replace the manual get+remove pattern with computeIfPresent() calls that
atomically remove parent map entries when they become empty. When the
remapping function returns null, ConcurrentHashMap automatically removes
the key - this is thread-safe without additional locking.
Before:
sessions = { appName: { userId: {} } } <-- empty maps leak
After:
sessions = {} <-- fully cleaned up
Add two new tests:
- deleteSession_cleansUpEmptyParentMaps: verifies via reflection that the
internal sessions map is completely empty after deleting the only session
- deleteSession_doesNotRemoveUserMapWhenOtherSessionsExist: verifies that
a userId entry is NOT pruned when the user still has remaining sessions
Fixes google#687
PiperOrigin-RevId: 869797377
PiperOrigin-RevId: 889281595
Release-As: 1.0.0-rc.2 PiperOrigin-RevId: 889282143
PiperOrigin-RevId: 889726165
…ble text_output field in the response PiperOrigin-RevId: 889787667
PiperOrigin-RevId: 889790941
PiperOrigin-RevId: 889808154
PiperOrigin-RevId: 890333876
Add @nullable annotations and move existing ones to appropriate places. It was influenced by Recommentations for making ADK Java more idiomatic, but it was later reevaluated to use different approach towards wrapper vs primitive types and mostly stay with existing solution. The changes are supposed to make the code more consistent in places where @nullable is either used or unused. PiperOrigin-RevId: 890340769
Updates AutoValue Builders to use the `property(value)` naming convention for setters, instead of the `setProperty(value)` convention. This change promotes consistency across the codebase. Deprecated `setProperty()` methods are retained where necessary for backward compatibility, and now delegate to the new `property()` methods. PiperOrigin-RevId: 890404260
…m.xml` dependencies - Set `artifactService` in `AgentExecutorProducer` with `InMemoryArtifactService` - Update `pom.xml` to specify `quarkus.native.builder-image` and fix groupId for `quarkus-bom`
PiperOrigin-RevId: 890464913
Release-As: 1.0.0 PiperOrigin-RevId: 891615346
…main PiperOrigin-RevId: 891634060
…main PiperOrigin-RevId: 891645269
This is part of a larger chain of commits for adding chat completion API support to the Apigee model. PiperOrigin-RevId: 891777579
PiperOrigin-RevId: 892263598
PiperOrigin-RevId: 892296560
PiperOrigin-RevId: 892863356
…session PiperOrigin-RevId: 892863477
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Please ensure you have read the contribution guide before creating a pull request.
Link to Issue or Description of Change
1. Link to an existing issue (if applicable):
2. Or, if no issue exists, describe the change:
If applicable, please follow the issue templates to provide as much detail as
possible.
Problem:
A clear and concise description of what the problem is.
Solution:
A clear and concise description of what you want to happen and why you choose
this solution.
Testing Plan
Please describe the tests that you ran to verify your changes. This is required
for all PRs that are not small documentation or typo fixes.
Unit Tests:
Please include a summary of passed java test results.
Manual End-to-End (E2E) Tests:
Please provide instructions on how to manually test your changes, including any
necessary setup or configuration. Please provide logs or screenshots to help
reviewers better understand the fix.
Checklist
Additional context
Add any other context or screenshots about the feature request here.