Fix Save Value to File for large debugger strings (#9452) - #9534
Open
kamilkrzywanski wants to merge 2 commits into
Open
Fix Save Value to File for large debugger strings (#9452)#9534kamilkrzywanski wants to merge 2 commits into
kamilkrzywanski wants to merge 2 commits into
Conversation
Keep shortened-string metadata in a strong map and resolve quoted Variable.getValue() forms so Save can stream the full remote content instead of the truncated 100k+"..." preview.
| public final class ShortenedStrings { | ||
|
|
||
| private static final Map<String, StringInfo> infoStrings = new WeakHashMap<String, StringInfo>(); | ||
| private static final Map<String, StringInfo> infoStrings = new HashMap<String, StringInfo>(); |
Contributor
There was a problem hiding this comment.
What is the reason to switch from WeakHashMap to HashMap. The full strings are looked up by a string and if the key goes out of scope it makes sense, that the referenced value is removed.
Contributor
Author
There was a problem hiding this comment.
@matthiasblaesing the WeakHashMap key is the shortened display string. Lookup often uses a different String instance (or a quoted Variable.getValue() form), so the entry can disappear while the UI still shows the truncated value and Save only writes that preview.
HashMap keeps it for the session; we still clear on last session remove. Also added quoted-form lookup.
Explain that WeakHashMap drops entries when the UI holds a different String instance (or quoted Variable.getValue form) than the map key. Signed-off-by: Kamil Krzywanski <kamilkrzywanski01@gmail.com>
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.
Summary
HashMapsogetShortenedInfo()still resolves after GC (previously aWeakHashMapcould drop the entry while the truncated...display value was still shown).Variable.getValue()forms ("content...") when looking up shortened info....instead of streaming the full remote string viaStringInfo.getContent().Fixes #9452
Test plan
Stringlarger than 100_000 characters...) and choose Save Value to FileStandalone verification of the lookup failure mode:
WeakHashMap, after GC of the map key, lookup of an equal display string returns null → save would write the truncated previewHashMap, lookup still succeeds → save can usegetContent()