[
https://issues.redhat.com/browse/WFLY-13051?page=com.atlassian.jira.plugi...
]
Eduardo Martins commented on WFLY-13051:
----------------------------------------
[~nimo22] sorry, it's not possible, and after internal team discussion we agreed
allowing apps to reach internal executors would lock us on implementation details and
could introduce other issues (e.g. security). If you really need to remove tasks when
canceled (instead of when these expire) the work around possible would be for your app or
custom extension to manage a ScheduledThreadPoolExecutor and use the ContextService to
make tasks contextual (if needed). Not sure such workaround would have a significant
performance advantage tho...
provide setRemoveOnCancelPolicy on ManagedScheduledExecutorService
------------------------------------------------------------------
Key: WFLY-13051
URL:
https://issues.redhat.com/browse/WFLY-13051
Project: WildFly
Issue Type: Enhancement
Components: Concurrency Utilities
Affects Versions: 19.0.0.Beta1
Reporter: nimo stephan
Assignee: Eduardo Martins
Priority: Major
Using
{code:java}
@Resource
private ManagedScheduledExecutorService executor;
{code}
provides no possiblity to setRemoveOnCancelPolicy to true.
A casting within a method:
{code:java}
((ScheduledThreadPoolExecutor) executor).setRemoveOnCancelPolicy(true);
{code}
throws the error:
{code:java}
Caused by: javax.ejb.EJBException: java.lang.ClassCastException: class
org.glassfish.enterprise.concurrent.ManagedScheduledExecutorServiceAdapter cannot be cast
to class java.util.concurrent.ScheduledThreadPoolExecutor
(org.glassfish.enterprise.concurrent.ManagedScheduledExecutorServiceAdapter is in unnamed
module of loader 'org.glassfish.javax.enterprise.concurrent' @a93b7af;
java.util.concurrent.ScheduledThreadPoolExecutor is in module java.base of loader
'bootstrap')
at
org.jboss.as.ejb3@17.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:246)
at
org.jboss.as.ejb3@17.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(CMTTxInterceptor.java:388)
at
org.jboss.as.ejb3@17.0.1.Final//org.jboss.as.ejb3.tx.LifecycleCMTTxInterceptor.processInvocation(LifecycleCMTTxInterceptor.java:68)
{code}
Please provide option to cast or if not possible to add the property
{code:java}
setRemoveOnCancelPolicy()
{code}
within the object ManagedScheduledExecutorService. Because without it, we cannot remove
a task from the queue with "future.cancel(false)".
--
This message was sent by Atlassian Jira
(v7.13.8#713008)