[ 
https://issues.apache.org/jira/browse/JEXL-255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16385384#comment-16385384
 ] 

Henri Biestro commented on JEXL-255:
------------------------------------

I've committed some test code accessible through git ( 
https://github.com/apache/commons-jexl/commit/d7fb538233920b8de8deca98d9251c846df7db5a
 )
Let me know if this is what you're after.

> Ability to continue interrupted scripts
> ---------------------------------------
>
>                 Key: JEXL-255
>                 URL: https://issues.apache.org/jira/browse/JEXL-255
>             Project: Commons JEXL
>          Issue Type: Improvement
>    Affects Versions: 3.1
>            Reporter: Dmitri Blinov
>            Priority: Major
>
> I'm trying to implement the {{@timeout}} annotation that should work like the 
> following
> {code:java}
> @timeout(15000) { return longrunningcall(); }
>  {code}
> The idea is to protect part of the script code from being executed 
> indefinitely or more than allowed by business rules. The script should 
> continue its evaluation after the {{@timeout}} annotation regardless of 
> whether the timeout has taken place or not.
> There is a straightforward implementation that starts guarding thread which 
> should invoke {{Thread.interrupt()}} for the thread executing the script. The 
> {{InterruptedException | JexlException.Cancel}} is then caught and swallowed 
> inside the {{processAnnotation()}} method, and if the guard thread has fired, 
> which means the timeout occured, the {{null}} value is returned.
> I expected the script to continue its evaluation after the exception is 
> processed inside {{processAnnotation()}} code, but the script nevertheless 
> throwed {{JexlException.Cancel}} as a result. The suggestion is to allow 
> script to continue its evaluation once {{InterruptedException}} or 
> {{JexlException.Cancel}} is processed. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to