[jboss-jira] [JBoss JIRA] (WFLY-12329) ManagedScheduledExecutorService should be only available after server is ready

Eduardo Martins (Jira) issues at jboss.org
Wed Aug 7 17:48:02 EDT 2019


    [ https://issues.jboss.org/browse/WFLY-12329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13768290#comment-13768290 ] 

Eduardo Martins edited comment on WFLY-12329 at 8/7/19 5:47 PM:
----------------------------------------------------------------

[~nimo22] can you please attach a project I may use to reproduce the issue at startup? If I can confirm it than will certainly fix it.

Wrt your question, those methods come from JDK's ExecutorService, which ManagedExecutorService extends, my guess is that being able to reuse ExecutorService was considered more important than not exposing lifecycle related methods that are forbidden to use... But just my guess, I was not in the spec team!


was (Author: emmartins):
[~nimo22] can you attach a project I may use to reproduce the issue at startup? Wrt your question, those methods come from JDK's ExecutorService, which ManagedExecutorService extends, my guess is that being able to reuse ExecutorService was considered more important than not exposing lifecycle related methods that are forbidden to use... But just my guess, I was not in the spec team!

> ManagedScheduledExecutorService should be only available after server is ready
> ------------------------------------------------------------------------------
>
>                 Key: WFLY-12329
>                 URL: https://issues.jboss.org/browse/WFLY-12329
>             Project: WildFly
>          Issue Type: Bug
>          Components: Concurrency Utilities
>    Affects Versions: 17.0.1.Final
>            Reporter: nimo stephan
>            Assignee: Eduardo Martins
>            Priority: Major
>
> I use a *ManagedScheduledExecutorService* to execute tasks periodically:
> {code:java}
> @Startup
> @Singleton
> public class TaskScheduler {
>     @Resource
>     ManagedScheduledExecutorService executorService;
>     @PostConstruct
>     public void init() {
>         executorService.scheduleAtFixedRate(this::task, 0, 5, TimeUnit.SECONDS);
>     }
>     public void task() {
>         System.out.println("long running task:" + LocalTime.now());
>     }
> }
> {code}
> Wildfly throws a few exceptions as long as server is not fully initiated and in "suspend"-mode:
> {code:java}
> 12:44:12,715 ERROR [org.jboss.as.ee] (EE-ManagedScheduledExecutorService-default-Thread-3) WFLYEE0110: Failed to run scheduled task: java.lang.IllegalStateException: WFLYEE0111: Cannot run scheduled task my.Task$$Lambda$1041/0x000000080240a040 at 5ee966ec as container is suspended
> 	at org.jboss.as.ee at 17.0.1.Final//org.jboss.as.ee.concurrent.ControlPointUtils$ControlledScheduledRunnable.run(ControlPointUtils.java:164)
> 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
> 	at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
> 	at org.glassfish.javax.enterprise.concurrent//org.glassfish.enterprise.concurrent.internal.ManagedScheduledThreadPoolExecutor$ManagedScheduledFutureTask.access$201(ManagedScheduledThreadPoolExecutor.java:383)
> 	at org.glassfish.javax.enterprise.concurrent//org.glassfish.enterprise.concurrent.internal.ManagedScheduledThreadPoolExecutor$ManagedScheduledFutureTask.run(ManagedScheduledThreadPoolExecutor.java:534)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> 	at java.base/java.lang.Thread.run(Thread.java:835)
> 	at org.glassfish.javax.enterprise.concurrent//org.glassfish.enterprise.concurrent.ManagedThreadFactoryImpl$ManagedThread.run(ManagedThreadFactoryImpl.java:250)
> {code}
> I use _ManagedScheduledExecutorService_ instead of _ScheduledExecutorService_ in JEE because, *ManagedScheduledExecutorService* should be managed by JEE. Hence, the server should also manage and guarantee not to fire the executorService until the server is ready (and EJBs are available).



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the jboss-jira mailing list