[
https://issues.jboss.org/browse/WFLY-12329?page=com.atlassian.jira.plugin...
]
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@5ee966ec as container is suspended
at
org.jboss.as.ee@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)