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
>> 

Reply via email to