Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-12390

Hot-Deploy throws IllegalStateException: Timer already cancelled

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • 17.0.1.Final
    • EJB
    • None
    • Hide
      • have a Wilfly running
      • deploy (API or directory) a WAR
      • deploy again, again

      Have a persistent timer:

      @javax.ejb.Startup  
      @javax.ejb.Singleton  
      public class CronJobs {  
          @Schedule(hour = "4")  
          public void checkSteamOrders() {  
              ...  
          }  
      
      <timer-service thread-pool-name="default" default-data-store="clustered-store">
          <data-stores>
              <database-data-store name="clustered-store" datasource-jndi-name="java:jboss/datasource/TimerSyncDS" database="postgresql" partition="timer"/>
          </data-stores>
      </timer-service>
      
      Show
      have a Wilfly running deploy (API or directory) a WAR deploy again, again Have a persistent timer: @javax.ejb.Startup @javax.ejb.Singleton public class CronJobs { @Schedule(hour = "4" ) public void checkSteamOrders() { ... } <timer-service thread-pool-name= "default" default-data-store= "clustered-store" > <data-stores> <database-data-store name= "clustered-store" datasource-jndi-name= "java:jboss/datasource/TimerSyncDS" database= "postgresql" partition= "timer" /> </data-stores> </timer-service>

    Description

      I did an Upgrade from 11 to 17.0.1 and now I'm getting IllegalStateException on hot-deploys.

      What I tried without result:

      • truncate the jboss_ejb_timer table (to remove existing)
      • remove all old @Schedule and add a new different timer
      • use @Resource TimerService instead of @Schedule
      • deployment using
        • auto-deploy of zipped new war copied to $JBOSS_HOME/server/deployments/
        • call %jboss_bin%\jboss-cli.bat --connect controller=xxxxx:19990 --user=xxx --password=xxxx --command="deploy %war_path_1%%filename_1% --name=%package_name_1%.war --force"
        • call mvn -q -f %package_name_1%\pom.xml wildfly:undeploy wildfly:deploy -Dwildfly.hostname=xxxxx -Dwildfly.password=xxxxxx

      restart or removing all timers allows to deploy again (for a time)

      2019-08-16 16:13:14,940 ERROR  [org.jboss.msc.service.fail] MSC000001: Failed to start service jboss.deployment.unit."xxxxxxx.war".component.CronJobs.START: org.jboss.msc.service.Star  
      tException in service jboss.deployment.unit."xxxxxxx.war".component.CronJobs.START: java.lang.IllegalStateException: Timer already cancelled.  
              at org.jboss.as.ee.component.ComponentStartService$1.run(ComponentStartService.java:57)  
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)  
              at java.util.concurrent.FutureTask.run(FutureTask.java:266)  
              at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)  
              at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)  
              at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)  
              at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)  
              at java.lang.Thread.run(Thread.java:745)  
              at org.jboss.threads.JBossThread.run(JBossThread.java:485)  
      Caused by: java.lang.IllegalStateException: Timer already cancelled.  
              at java.util.Timer.sched(Timer.java:397)  
              at java.util.Timer.schedule(Timer.java:193)  
              at org.jboss.as.ejb3.timerservice.TimerServiceImpl.scheduleTimeout(TimerServiceImpl.java:906)  
              at org.jboss.as.ejb3.timerservice.TimerImpl.scheduleTimeout(TimerImpl.java:537)  
              at org.jboss.as.ejb3.timerservice.TimerServiceImpl.startTimer(TimerServiceImpl.java:785)  
              at org.jboss.as.ejb3.timerservice.TimerServiceImpl.restoreTimers(TimerServiceImpl.java:756)  
              at org.jboss.as.ejb3.timerservice.TimerServiceImpl.activate(TimerServiceImpl.java:223)  
              at org.jboss.as.ejb3.component.EJBComponent.init(EJBComponent.java:595)  
              at org.jboss.as.ee.component.BasicComponent.start(BasicComponent.java:222)  
              at org.jboss.as.ejb3.component.singleton.SingletonComponent.start(SingletonComponent.java:136)  
              at org.jboss.as.ee.component.ComponentStartService$1.run(ComponentStartService.java:54)  
              ... 8 more  
      

      As it happens in programming, I can't reproduce this at the moment. I got tormented for weeks but today it doesn't happen...

      Attachments

        Activity

          People

            tadamski@redhat.com Tomasz Adamski
            r0osl David Schmidt (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: