Hi Romain!
Taking the snapshot from today (Monday 12) looks better but still not good
enough I think.
The following situation: An automticTimer is running and a programmatic timer
is added (but yet not fired).
End TomEE. Wait till trigger time of programmatic trigger passed. Start TomEE.
è Startup sequence seems to hang, no access to SchedulerBeanPersisted.
12.11.2012 13:24:27 org.quartz.core.QuartzScheduler initialize
INFO: Scheduler meta-data: Quartz Scheduler (v2.1.6) 'MyScheduler' with
instanceId 'DE064071352723067406'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 4 threads.
Using job-store 'org.quartz.impl.jdbcjobstore.JobStoreCMT' - which supports
persistence. and is clustered.
12.11.2012 13:24:27 org.quartz.impl.StdSchedulerFactory instantiate
INFO: Quartz scheduler 'MyScheduler' initialized from an externally provided
properties instance.
12.11.2012 13:24:27 org.quartz.impl.StdSchedulerFactory instantiate
INFO: Quartz scheduler version: 2.1.6
12.11.2012 13:24:27 org.quartz.impl.jdbcjobstore.JobStoreSupport
logWarnIfNonZero
INFO: ClusterManager: detected 1 failed or restarted instances.
12.11.2012 13:24:27 org.quartz.impl.jdbcjobstore.JobStoreSupport clusterRecover
INFO: ClusterManager: Scanning for instance "DE064071352722853574"'s failed
in-progress jobs.
12.11.2012 13:24:27 org.quartz.impl.jdbcjobstore.JobStoreSupport
logWarnIfNonZero
INFO: ClusterManager: ......Freed 1 acquired trigger(s).
12.11.2012 13:24:27 org.quartz.core.QuartzScheduler start
INFO: Scheduler MyScheduler_$_DE064071352723067406 started.
12.11.2012 13:24:27 org.quartz.impl.jdbcjobstore.JobStoreSupport
recoverMisfiredJobs
INFO: Handling 1 trigger(s) that missed their scheduled fire-time.
All following startups of TomEE show the same behavior, but slightly different
log messages at the end:
[…]
12.11.2012 13:45:03 org.quartz.impl.jdbcjobstore.JobStoreSupport
logWarnIfNonZero
INFO: ClusterManager: detected 1 failed or restarted instances.
12.11.2012 13:45:03 org.quartz.impl.jdbcjobstore.JobStoreSupport clusterRecover
INFO: ClusterManager: Scanning for instance "DE064071352724225831"'s failed
in-progress jobs.
12.11.2012 13:45:03 org.quartz.core.QuartzScheduler start
INFO: Scheduler MyScheduler_$_DE064071352724303131 started.
12.11.2012 13:45:03 org.quartz.impl.jdbcjobstore.JobStoreSupport
recoverMisfiredJobs
INFO: Handling 2 trigger(s) that missed their scheduled fire-time.
A cleanup of the quartz tables is needed to get the application running again.
Best regards,
Thomas
From: Romain Manni-Bucau [via OpenEJB]
[mailto:[email protected]]
Sent: Freitag, 9. November 2012 15:30
To: Thomas Schuler
Subject: RE: Use external database for persistent timer service
I pushed some stuff yesterday about 2 (well can be linked even if not
direct) so it should be in the snapshot
Le 9 nov. 2012 13:16, "tschuler" <[hidden
email]</user/SendEmail.jtp?type=node&node=4658497&i=0>> a écrit :
> Hi Romain!
>
> About 1: It may be a config issue, but I don't think so - doesn't matter
> right now.
> About 2: If you have a solution for it, please let me know. Would be
> included in a future snapshot, I think?
> About 3: We need to be sure that timer issues using e.g. the actual TomEE
> version can be executed using the next TomEE version.
> As there are serialized OpenEJB classes in the quartz
> database, they may be incompatible with the class definition included in a
> future TomEE version.
>
> Best regards,
> Thomas
>
>
> From: Romain Manni-Bucau [via OpenEJB] [mailto:
> [hidden email]</user/SendEmail.jtp?type=node&node=4658497&i=1>]
> Sent: Donnerstag, 8. November 2012 22:38
> To: Thomas Schuler
> Subject: Re: Use external database for persistent timer service
>
> about 1: maybe just a quartz config
> about 2: looking into it, think i got why but thinking to the best
> solution*
> about 3: we can store it as we want. That said not sure it'd be used, if
> you change your tomee instance you often reset some datas (and i think
> these timers can be resetted in such a case, no?)
>
> *Romain Manni-Bucau*
> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
> *Blog: **http://rmannibucau.wordpress.com/*<
> http://rmannibucau.wordpress.com/>
> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
> *Github: https://github.com/rmannibucau*
>
>
>
>
> 2012/11/8 tschuler <[hidden
> email]</user/SendEmail.jtp?type=node&node=4658490&i=0>>
>
> > 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.
> >
>
> ________________________________
> If you reply to this email, your message will be added to the discussion
> below:
>
> http://openejb.979440.n4.nabble.com/Use-external-database-for-persistent-timer-service-tp4658321p4658490.html
> To unsubscribe from Use external database for persistent timer service,
> click here<
> >.
> NAML<
> http://openejb.979440.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml
> >
>
>
>
>
> --
> View this message in context:
> http://openejb.979440.n4.nabble.com/Use-external-database-for-persistent-timer-service-tp4658321p4658495.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.
________________________________
If you reply to this email, your message will be added to the discussion below:
http://openejb.979440.n4.nabble.com/Use-external-database-for-persistent-timer-service-tp4658321p4658497.html
To unsubscribe from Use external database for persistent timer service, click
here<http://openejb.979440.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4658321&code=dGhvbWFzLnNjaHVsZXJAb3BlbnRleHQuY29tfDQ2NTgzMjF8LTE4NTIyNTQ0OTI=>.
NAML<http://openejb.979440.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
--
View this message in context:
http://openejb.979440.n4.nabble.com/Use-external-database-for-persistent-timer-service-tp4658321p4658529.html
Sent from the OpenEJB User mailing list archive at Nabble.com.