Thanks, by all means report back with what you found :-) Attila.
> On 2021. Feb 27., at 18:59, Viktor Remennik <bbik...@gmail.com> wrote: > > I didn’t checked it yet, just wanted to ask first. It is implemented in > graal, will look there to check how. The first idea i thought, was to inject > some global var checking in loops, but i am not a big specialist in that area > yet. Will study it further then, thank you! > > Kind regards, > Viktor > >> On 27 Feb 2021, at 19:07, Attila Szegedi <szege...@gmail.com> wrote: >> >> No, there’s no support for that. Nashorn compiles all scripts to JVM >> bytecode and runs them as such. There’s no more of a way to stop that code >> than any Java code. Even if there was some other way, I don’t see how would >> stopping a thread be materially better than what Thread#stop provides. I’m >> not saying there’s no better way, I’m just saying I don’t see it. I’m open >> to suggestion on how could a different mechanism be better. >> >> I can imagine that if someone wanted something like this, they could >> implement a ClassFileTransformer and transform the bytecode to maybe add a >> check for some variable on the back edges of all loops? That’d help with >> infinite loops in Java code invoked from scripts as well. Of course, if the >> variable isn’t global, then you’d need to pass it around, or retrieve it >> from a thread local, which could be expensive (you could add a local >> variable for every loop to count and only check the thread local every 1000 >> iterations?) And again, how would the behavior of acting on the “stop” flag >> be different than a stack unwind through a ThreadDeath? >> >> Lots of questions, but I’m happy to listen and discuss. >> >> Attila. >> >> >>> On 2021. Feb 27., at 14:53, Viktor Remennik <bbik...@gmail.com> wrote: >>> >>> Is there already a way to terminate a running script? I found some old >>> discussions and articles regarding it, is there any progress these days? It >>> would be great to have something like CompiledScript#stop or something like >>> interrupt handler inside the Nashorn eval, because currently I have to use >>> Thread#stop with all its disadvantages and problems. I have user defined >>> scripts running in my application, users are technicians but still could >>> make a mistakes, so I'd like to control the script execution time and kill >>> scripts threads if configured maximum execution time limit has been >>> exceeded. As Nashorn is standalone now, I suppose I, or maybe someone more >>> experienced in Nashorn's internals, could try to implement this, but I'd >>> like to check first, isn't it is already implemented. >>> >>> https://stackoverflow.com/questions/24855182/interrupt-java-thread-running-nashorn-script >>> >>> <https://stackoverflow.com/questions/24855182/interrupt-java-thread-running-nashorn-script> >>> http://blog.getsandbox.com/2018/01/15/nashorn-interupt/ >>> <http://blog.getsandbox.com/2018/01/15/nashorn-interupt/> >>> >>> >>> Thank you >>> >>> Viktor >>