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.