You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Jean-Baptiste Onofré (Jira)" <ji...@apache.org> on 2021/04/14 04:58:00 UTC

[jira] [Assigned] (KARAF-7107) JDBC Persisted scheduler log errors after restart when the Job implemented as Runnable

     [ https://issues.apache.org/jira/browse/KARAF-7107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jean-Baptiste Onofré reassigned KARAF-7107:
-------------------------------------------

    Assignee: Jean-Baptiste Onofré

> JDBC Persisted scheduler log errors after restart when the Job implemented as Runnable
> --------------------------------------------------------------------------------------
>
>                 Key: KARAF-7107
>                 URL: https://issues.apache.org/jira/browse/KARAF-7107
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf
>    Affects Versions: 4.2.9
>            Reporter: Róbert Csákány
>            Assignee: Jean-Baptiste Onofré
>            Priority: Major
>
> I've made some JDBC persisted Quartz scheduler config. My problem is that after restart the scheduler cannot deserialize JobDetails, and log the following error message:
> We are using Runnable interface and whiteboiard patter to register scheduled services. We would like to use multiple nodes and there is jobs which cannot run on parallel nodes. So I decided to persist Jobs in JDBC DataSource and it have been set as NonParallel. 
> The first run is okay. After karaf restart all of the JobDetails shown error messages: 
> 22:34:51.795 *ERROR* [Judo_Worker-4] Scheduled job org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor@24569822 is neither a job nor a runnable
> I checked the code and karaf creating in QuartzScheduler.java:
> {code:java}
> /**
>  * Create the job detail.
>  */
> private JobDetail createJobDetail(final String name,
>                                   final JobDataMap jobDataMap,
>                                   final boolean concurrent) {
>     return JobBuilder.newJob((concurrent ? QuartzJobExecutor.class : NonParallelQuartzJobExecutor.class))
>             .withIdentity(name)
>             .usingJobData(jobDataMap)
>             .build();
> } {code}
>  And it is saved to Database as JobDetail.
> The qrtz_job_details table contains:
> {code:java}
> Judo	BejelentesekDetailProcessor.518	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	EmailSendingProcessor.519	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	SynchronizeNewBejelentesek.520	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	SynchronizeNewBejelentesek.521	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	SynchronizeUnprocessedErtesitesek.522	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	BejelentesekDetailProcessor.516	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	EmailSendingProcessor.517	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	SynchronizeNewBejelentesek.518	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	SynchronizeNewBejelentesek.519	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false
> Judo	SynchronizeUnprocessedErtesitesek.520	DEFAULT		org.apache.karaf.scheduler.core.NonParallelQuartzJobExecutor	false	true	false	false 
> {code}
> Configurations:
> {code:java}
> PID = org.apache.karaf.scheduler.quartz
>   BundleLocation = ?
>   .__createdBy = hu.kozut.e_ugyfelszolgalat.synchronizer.scheduler.RdbmsBasedSchedulerActivator
>   org.quartz.dataSource.scheduler.jndiURL = osgi:service/javax.sql.DataSource/(managed.datasource.name=e_ugyfelszolgalat)
>   org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
>   org.quartz.jobStore.dataSource = scheduler
>   org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
>   org.quartz.jobStore.isClustered = true
>   org.quartz.scheduler.instanceId = AUTO
>   org.quartz.scheduler.instanceName = Judo
>   org.quartz.scheduler.jmx.export = true
>   org.quartz.scheduler.rmi.export = false
>   org.quartz.scheduler.rmi.proxy = false
>   org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
>   org.quartz.threadPool.threadCount = 4
>   org.quartz.threadPool.threadPriority = 5
>   service.pid = org.apache.karaf.scheduler.quartz
> PID = hu.kozut.e_ugyfelszolgalat.synchronizer.job.BejelentesekDetailsProcessorJob
>   BundleLocation = Unbound
>   __osgi_templated_checksum = 1248829273739272171452486251334728918540454078316
>   __osgi_templated_config_name = hu.kozut.e_ugyfelszolgalat.synchronizer.job.BejelentesekDetailsProcessorJob
>   __osgi_templated_created_by = configset.acdc600e-f792-4424-a176-5cc47ce21650
>   scheduler.concurrent = false
>   scheduler.name = BejelentesekDetailProcessor
>   scheduler.period = 10
>   scheduler.times = -1
>   service.pid = hu.kozut.e_ugyfelszolgalat.synchronizer.job.BejelentesekDetailsProcessorJob
> PID = hu.kozut.e_ugyfelszolgalat.synchronizer.job.EmailSendingProcessorJob
>   BundleLocation = Unbound
>   __osgi_templated_checksum = 686611006004284506808487604736328095268865193234
>   __osgi_templated_config_name = hu.kozut.e_ugyfelszolgalat.synchronizer.job.EmailSendingProcessorJob
>   __osgi_templated_created_by = configset.acdc600e-f792-4424-a176-5cc47ce21650
>   scheduler.concurrent = false
>   scheduler.name = EmailSendingProcessor
>   scheduler.period = 60
>   scheduler.times = -1
>   service.pid = hu.kozut.e_ugyfelszolgalat.synchronizer.job.EmailSendingProcessorJob
> PID = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeExistingBejelentesekDetailsJob
>   BundleLocation = Unbound
>   __osgi_templated_checksum = 603454943405932697744922426812173262117830457407
>   __osgi_templated_config_name = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeExistingBejelentesekDetailsJob
>   __osgi_templated_created_by = configset.acdc600e-f792-4424-a176-5cc47ce21650
>   pagesToSynchronize = 40
>   scheduler.concurrent = false
>   scheduler.name = SynchronizeNewBejelentesek
>   scheduler.period = 600
>   scheduler.times = -1
>   service.pid = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeExistingBejelentesekDetailsJob
> PID = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeNewBejelentesekJob
>   BundleLocation = Unbound
>   // = scheduler.immediate=true
>   __osgi_templated_checksum = 419815457051716921249617125515620429379727210664
>   __osgi_templated_config_name = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeNewBejelentesekJob
>   __osgi_templated_created_by = configset.acdc600e-f792-4424-a176-5cc47ce21650
>   pagesToSynchronize = 40
>   scheduler.concurrent = false
>   scheduler.name = SynchronizeNewBejelentesek
>   scheduler.period = 60
>   scheduler.times = -1
>   service.pid = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeNewBejelentesekJob
> PID = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeUnprocessedErtesitesekJob
>   BundleLocation = Unbound
>   __osgi_templated_checksum = 1202364653297725275903508563451782287792274883298
>   __osgi_templated_config_name = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeUnprocessedErtesitesekJob
>   __osgi_templated_created_by = configset.acdc600e-f792-4424-a176-5cc47ce21650
>   scheduler.concurrent = false
>   scheduler.immediate = false
>   scheduler.name = SynchronizeUnprocessedErtesitesek
>   scheduler.period = 60
>   scheduler.times = -1
>   service.pid = hu.kozut.e_ugyfelszolgalat.synchronizer.job.SynchronizeUnprocessedErtesitesekJob
>  {code}
>  
>  
> And we are using Runnable as scheduled item.  The other problem is the karaf Job interface is also not extending quartz Job or java Runnable interface, so the problem is same. I've checked the whiteboard tracker and it's only tracking for karaf Job and java Runnable.
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)