Hi!

I tried todays snapshot and it worked better if TomEE is running all the
time.
But in case of TomEE restart a few errors happen for persisted timers.

1) automatic timeout:
    It takes two minutes until the timer fires again 

        08.11.2012 14:28:46 org.apache.catalina.startup.Catalina start
        INFO: Server startup in 2357 ms
        08.11.2012 14:29:45 org.quartz.impl.jdbcjobstore.JobStoreSupport
logWarnIfNonZero
        INFO: ClusterManager: detected 1 failed or restarted instances.
        08.11.2012 14:29:45 org.quartz.impl.jdbcjobstore.JobStoreSupport
clusterRecover
        INFO: ClusterManager: Scanning for instance "DE064071352380642408"'s
failed in-progress jobs.
        08.11.2012 14:29:45 org.quartz.impl.jdbcjobstore.JobStoreSupport
logWarnIfNonZero
        INFO: ClusterManager: ......Freed 1 acquired trigger(s).
        08.11.2012 14:30:45 org.quartz.impl.jdbcjobstore.JobStoreSupport
recoverMisfiredJobs
        INFO: Handling 1 trigger(s) that missed their scheduled fire-time.
        08.11.2012 14:30:45 timerPersisted.server.SchedulerBeanAutomated
automaticTimeout
        INFO: Automatic timeout occured

2) automatic and programmatic timeouts:
    TomEE kill prevented the execution of five programmatic timeouts, while
server restart the first programmatic timeout causes an error and is never
executed

        INFO: OpenWebBeans Container has started, it took 10 ms.
        08.11.2012 16:59:02
org.apache.openejb.core.timer.EjbTimerServiceImpl ejbTimeout
        WARNUNG: Exception from ejbTimeout on SchedulerBeanPersisted
        org.apache.openejb.OpenEJBException: Deployment does not exist in
this container. Deployment(id='SchedulerBeanPersisted'), Container(id='My
Singleton Container')
                at
org.apache.openejb.core.singleton.SingletonContainer.invoke(SingletonContainer.java:180)
                at
org.apache.openejb.core.timer.EjbTimerServiceImpl.ejbTimeout(EjbTimerServiceImpl.java:552)
                at
org.apache.openejb.core.timer.EjbTimeoutJob.execute(EjbTimeoutJob.java:39)
                at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
                at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
        08.11.2012 16:59:02 org.apache.openejb.assembler.classic.Assembler
createApplication
        INFO: Created Ejb(deployment-id=SchedulerBeanAutomated,
ejb-name=SchedulerBeanAutomated, container=My Singleton Container)
        08.11.2012 16:59:02
org.apache.openejb.core.timer.EjbTimerServiceImpl ejbTimeout
        WARNUNG: Exception from ejbTimeout on SchedulerBeanPersisted
        org.apache.openejb.OpenEJBException: Deployment does not exist in
this container. Deployment(id='SchedulerBeanPersisted'), Container(id='My
Singleton Container')
                at
org.apache.openejb.core.singleton.SingletonContainer.invoke(SingletonContainer.java:180)
                at
org.apache.openejb.core.timer.EjbTimerServiceImpl.ejbTimeout(EjbTimerServiceImpl.java:552)
                at
org.apache.openejb.core.timer.EjbTimeoutJob.execute(EjbTimeoutJob.java:39)
                at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
                at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
        08.11.2012 16:59:02
org.apache.openejb.core.timer.EjbTimerServiceImpl ejbTimeout
        WARNUNG: Exception from ejbTimeout on SchedulerBeanPersisted
        org.apache.openejb.OpenEJBException: Deployment does not exist in
this container. Deployment(id='SchedulerBeanPersisted'), Container(id='My
Singleton Container')
                at
org.apache.openejb.core.singleton.SingletonContainer.invoke(SingletonContainer.java:180)
                at
org.apache.openejb.core.timer.EjbTimerServiceImpl.ejbTimeout(EjbTimerServiceImpl.java:552)
                at
org.apache.openejb.core.timer.EjbTimeoutJob.execute(EjbTimeoutJob.java:39)
                at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
                at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
        08.11.2012 16:59:02
org.apache.openejb.core.timer.EjbTimerServiceImpl ejbTimeout
        WARNUNG: Failed to execute ejbTimeout on SchedulerBeanPersisted
successfully within 1 attempts
        08.11.2012 16:59:02 org.apache.openejb.assembler.classic.Assembler
createApplication
        INFO: Created Ejb(deployment-id=SchedulerBeanPersisted,
ejb-name=SchedulerBeanPersisted, container=My Singleton Container)
        08.11.2012 16:59:02 org.apache.openejb.assembler.classic.Assembler
createApplication
        INFO: Started Ejb(deployment-id=SchedulerBeanAutomated,
ejb-name=SchedulerBeanAutomated, container=My Singleton Container)
        08.11.2012 16:59:02 org.apache.openejb.assembler.classic.Assembler
createApplication
        INFO: Started Ejb(deployment-id=SchedulerBeanPersisted,
ejb-name=SchedulerBeanPersisted, container=My Singleton Container)
        08.11.2012 16:59:02 org.apache.openejb.assembler.classic.Assembler
createApplication
        INFO: Deployed
Application(path=C:\Java\tomee-examples\tomee-timerPersisted\webapps\timerPersisted)
        08.11.2012 16:59:02 timerPersisted.server.SchedulerBeanPersisted
programmaticTimeout
        INFO: Programmatic timeout occurred.

3) Having a look into the quartz database tables, I can see that JOB_DATA
column of table QRTZ_TRIGGERS includes the, let me call it timer context.
    This timer context includes serialized objects.
    What I am wondering about is how you can garantee that the timer events
can be executed with an updated TomEE version that may include an update of
the serialzed objects?

Best regards,
Thomas



--
View this message in context: 
http://openejb.979440.n4.nabble.com/Use-external-database-for-persistent-timer-service-tp4658321p4658484.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Reply via email to