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

Róbert Csákány updated KARAF-7107:
----------------------------------
    Description: 
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.

 

 

  was:
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}
 

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.

 

 


> 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
>            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)

Reply via email to