commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Biestro (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JEXL-193) InterruptedException is swallowed in function call in silent and non-strict mode
Date Fri, 06 May 2016 12:54:12 GMT

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

Henri Biestro commented on JEXL-193:
------------------------------------

On checking cancellation when handling 'return';  if the return argument evaluation did not
throw a cancel exception, we have a result and we were not interrupted. Not sure what we'd
functionally gain by an extra check.
On the exception throwing when cancellation/interruption occur, do you have a use-case that
suffers from the current behavior? Asynchronous/cancellable execution is best handled through
Future<> which seemingly shield this detail.
OOM is an error you can (at least, will) not recover from, InterruptedException are (should
be, at least in many useful scenarios) recoverable . 

> InterruptedException is swallowed in function call in silent and non-strict mode
> --------------------------------------------------------------------------------
>
>                 Key: JEXL-193
>                 URL: https://issues.apache.org/jira/browse/JEXL-193
>             Project: Commons JEXL
>          Issue Type: Bug
>    Affects Versions: 3.0
>            Reporter: Dmitri Blinov
>            Assignee: Henri Biestro
>             Fix For: 3.0.1
>
>
> The following test case fails with 
> {code}
> java.lang.AssertionError: Values should be different. Actual: 42
> 	at org.junit.Assert.fail(Assert.java:88)
> 	at org.junit.Assert.failEquals(Assert.java:185)
> 	at org.junit.Assert.assertNotEquals(Assert.java:161)
> {code}
> {code}
>     public static class TestContext extends MapContext implements JexlContext.NamespaceResolver
{
>         public int interrupt() throws InterruptedException {
>             throw new InterruptedException();
>         }
>     }
>     @Test
>     public void testInterrupt() throws Exception {
>         JexlEngine jexl = new JexlBuilder().arithmetic(new JexlArithmetic(false)).strict(false).silent(true).create();
>         JexlScript e = jexl.createScript("interrupt(); return 42");
>         Callable<Object> c = e.callable(new TestContext());
>         Object t = c.call();
>         Assert.assertNotEquals(42, t);
>     }
> {code}
> Expected behaviour is to cancel script execution



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message