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 >