RFR: 8325945: Error reporting should limit the number of String characters printed

David Holmes dholmes at openjdk.org
Fri Jul 12 02:23:06 UTC 2024


Please review this enhancement that intends to improve the readability of error logs when very long `java.lang.String`s exist and when printed in full they obscure things in the log.

The suggestion was to add a `MaxStringPrintSize` flag, similar to the `MaxElementPrintSize` for arrays. I've set the default to 256 (arbitrary selection: not too big, not too small - may need adjusting) with a range from 0 to O_BUFLEN.

The method `java_lang_String::print` now takes a `max_length` parameter that defaults to `MaxStringPrintSize`. This allows more direct control if specific call sites want to print full strings regardless.

If a string's length exceeds `max_length` then we print it as follows:

"< first max_length/2 characters> ... <last max_length/2 characters>" (abridged)

For example if we print "ABCDE" with a max_length of 4 then the output is literally:

"AB ... DE" (abridged)

The message doesn't mention `MaxPrintStringSize` as that may not be involved in limiting the printed length. Developers will need to know to look at that (which is not 100% satisfactory but explaining everything in the output itself seems a bit excessive).

For testing purposes I added a WhiteBox API to print the string to a `stringStream` and then return it as a new `java.lang.String`.

Testing:
 - new test added for validation purposes
 - tiers 1 - 3 as sanity testing

Thanks

-------------

Commit messages:
 - Improve flag description
 - Fix indent
 - Merge branch 'master' into 8325945-print-string
 - 8325945: Error reporting should limit the number of String characters printed

Changes: https://git.openjdk.org/jdk/pull/20150/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20150&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8325945
  Stats: 154 lines in 6 files changed: 151 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/20150.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20150/head:pull/20150

PR: https://git.openjdk.org/jdk/pull/20150


More information about the hotspot-dev mailing list