[user-question] on eval value size limit
Jan Lahoda
jan.lahoda at oracle.com
Tue Apr 11 15:45:20 UTC 2023
Hi Cyril,
For the remote execution backend (which is the default) is used, I
believe the truncation of the variable content is hardcoded, and cannot
be changed by the user. But for local/in-process execution backend, the
backend should not truncate the output. So, using the local execution
might be part of the solution. In the API, it could be something like:
public static void main(String[] args) {
{
JShell j = JShell.builder().build();
for (SnippetEvent evt : j.eval("\"a\".repeat(65536)")) {
System.err.println("output default execution: " +
evt.value().length());
}
}
{
JShell j = JShell.builder().executionEngine("local").build();
for (SnippetEvent evt : j.eval("\"a\".repeat(65536)")) {
System.err.println("output local execution: " +
evt.value().length());
}
}
}
which produces:
output default execution: 21844
output local execution: 65538
For the actual tool, there are feedback mode that define the truncation
limit (inside the "UI" tool), and these can be set. For example:
$ ./jshell --execution local
| Welcome to JShell -- Version 21-internal
| For an introduction type: /help intro
jshell> /set mode custom normal -command
| Created new feedback mode: custom
jshell> /set truncation custom 2147483647 varvalue,expression
jshell> /set feedback custom
| Feedback mode: custom
jshell> "a".repeat(65536)
$1 ==> "a... very long output
Please also note there's a related bugreport:
https://bugs.openjdk.org/browse/JDK-8299829
Thanks,
Jan
On 10. 04. 23 15:27, Cyril de Catheu wrote:
> Hey,
> I'm a user of jshell, I hope this is the correct mailing list for my
> question.
> It seems jshell snippets value have a character limit.
>
> It can be reproduced in a jshell with the following (sorry for the
> long strings):
>
> jshell> "a".repeat(21842);
> $1 ==>
> "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> ...
> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
>
> jshell> "a".repeat(21843);
> $2 ==>
> "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> ...
> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
>
> --> notice in the second case the last character is cut.
> So the limit seems to be of around 21842 characters.
>
> This does not look related to the jshell tool, it can also be
> reproduced with a jdk.jshell.JShell instance programmatically. It
> seems to be happening down in the ExecutionControl implementation.
>
> This is an issue for me because I'm using functions that return html
> or json that are >>20k characters, so my results get broken.
>
> Is there a way to change this limit?
>
> Have a nice day.
> Cyril de Catheu
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/kulla-dev/attachments/20230411/79e19e56/attachment-0001.htm>
More information about the kulla-dev
mailing list