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
> 

Reply via email to