[jboss-jira] [JBoss JIRA] (WFLY-13051) provide setRemoveOnCancelPolicy on ManagedScheduledExecutorService

nimo stephan (Jira) issues at jboss.org
Tue Jun 2 17:09:00 EDT 2020


    [ https://issues.redhat.com/browse/WFLY-13051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14131637#comment-14131637 ] 

nimo stephan commented on WFLY-13051:
-------------------------------------

Ok thanks for the information. 

>If you really need to remove tasks when canceled (instead of when these expire)

The problem is that even if the task is expired it will be within the scheduled queue for the next time and then will be fired again when I use


{code:java}
// no possibility to cancel tasks after it was submitted 
executor.scheduleWithFixedDelay(..)
{code}


Hence there is a need to cancel the task..the spec lacks for such cases..

However, thanks for that info..maybe you can keep this in mind when discussing to improve the spec..

> 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 at 17.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:246)
> 	at org.jboss.as.ejb3 at 17.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(CMTTxInterceptor.java:388)
> 	at org.jboss.as.ejb3 at 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)


More information about the jboss-jira mailing list