tomee-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Panzer (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OPENEJB-2115) Asynchronous EJB method invocation fails with Asynchronous.QueueType=PRIORITY
Date Mon, 25 May 2015 16:26:17 GMT

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

Robert Panzer commented on OPENEJB-2115:
----------------------------------------

You're right. At latest with Java EE 7 ManagedExecutors a PriorityQueue might make sense again
it this same code is used for them :)

> Asynchronous EJB method invocation fails with Asynchronous.QueueType=PRIORITY
> -----------------------------------------------------------------------------
>
>                 Key: OPENEJB-2115
>                 URL: https://issues.apache.org/jira/browse/OPENEJB-2115
>             Project: OpenEJB
>          Issue Type: Bug
>          Components: ejb31
>    Affects Versions: 4.7.2
>         Environment: TomEE 1.7.2
>            Reporter: Robert Panzer
>            Priority: Minor
>
> When setting the option {{Asynchronous.QueueType=PRIORITY}} TomEE will set a {{java.util.concurrent.PriorityQueue}}
as work queue on the ThreadPoolExecutor.
> A PriorityQueue expects that objects added to it are {{java.lang.Comparable}}.
> As {{ThreadPoolExecutor}} adds a {{java.util.concurrent.RunnableFuture}} that wraps the
{{Callable}} created by TomEE the invocation fails with a ClassCastException:
> {quote}
> java.lang.ClassCastException: java.util.concurrent.FutureTask cannot be cast to java.lang.Comparable
> 	at java.util.concurrent.PriorityBlockingQueue.siftUpComparable(PriorityBlockingQueue.java:357)
> 	at java.util.concurrent.PriorityBlockingQueue.offer(PriorityBlockingQueue.java:489)
> 	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1361)
> 	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
> 	at org.apache.openejb.async.AsynchronousPool.invoke(AsynchronousPool.java:76)
> 	at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:263)
> 	at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92)
> 	at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:322)
> 	at foo.bar.asyncejb.AsyncEJB1$$LocalBeanProxy.simpleCall(foo/bar/asyncejb/AsyncEJB1.java)
> 	at foo.bar.AsyncTest.test(AsyncTest.java:39)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> {quote}
> Therefore I think that offering the option {{AsynchronousPool.QueueType=PRIORITY}} does
not make any sense at all and could be completely removed.



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

Mime
View raw message