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)