
|
If you were logged in you would be able to see more operations.
|
|
|
|
|
| Component/s: |
None
|
| Affects Version/s: |
1.6.1
|
| Fix Version/s: |
1.6.3
|
|
|
I ran into the following issue where Quartz crashed with the under furnished exception. On debugging the issue, I came across the following line of code in
[b]JobStoreSupport.recoverMisfiredJobs(
Connection conn, boolean recovering)
[/b]
[i] if(trig.getNextFireTime().getTime() < earliestNewTime)
earliestNewTime = trig.getNextFireTime().getTime();[/i]
The exception arises because in the method, [i] doUpdateOfMisfiredTrigger(conn, null, trig, false, STATE_WAITING, recovering)[/i], called just prior to the execution of the above line, trig.nextFireTime is set to null at some point in the stack.
So a simple fix would be a NULL check on[i] trig.getNextFireTime()[/i] before [i]getTime()[/i] is called in the if clause [i]if (trig.getNextFireTime().getTime() < earliestNewTime)[/i]
Please do let me know your thoughts on the same.
-thanks
sbanerjee
[b]
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't recover jobs: null [See nested exception: java.lang.NullPointerException]]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:602)
at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:455)
at org.quartz.impl.StdScheduler.start(StdScheduler.java:146)
at com.vmware.vim.vcenter.scheduler.impl.QuartzSchedulerImpl.init(QuartzSchedulerImpl.java:42)
at com.vmware.vim.vcenter.scheduler.impl.QuartzSchedulerImpl.<init>(QuartzSchedulerImpl.java:34)
at com.vmware.vim.vcenter.scheduler.TaskManager.initScheduler(TaskManager.java:42)
at com.vmware.vim.vcenter.scheduler.TaskManager.<init>(TaskManager.java:37)
at com.vmware.vim.vcenter.scheduler.TaskManager.getInstance(TaskManager.java:29)
at com.vmware.vim.vcenter.scheduler.SchedulerUnitTest.setUpBeforeClass(SchedulerUnitTest.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74)
at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.quartz.JobPersistenceException: Couldn't recover jobs: null [See nested exception: java.lang.NullPointerException][ERROR] 19 Nov 06:39:32.349 PM main [com.vmware.vim.vcenter.scheduler.TaskManager]
Quartz Scheduler failed to start up org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't recover jobs: null [See nested exception: java.lang.NullPointerException]]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:845)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$2.execute(JobStoreSupport.java:781)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$40.execute(JobStoreSupport.java:3677)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3711)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3673)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:777)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:600)
... 22 more
Caused by: java.lang.NullPointerException
at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverMisfiredJobs(JobStoreSupport.java:934)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:809)
... 28 more[/b]
|
|
Description
|
I ran into the following issue where Quartz crashed with the under furnished exception. On debugging the issue, I came across the following line of code in
[b]JobStoreSupport.recoverMisfiredJobs(
Connection conn, boolean recovering)
[/b]
[i] if(trig.getNextFireTime().getTime() < earliestNewTime)
earliestNewTime = trig.getNextFireTime().getTime();[/i]
The exception arises because in the method, [i] doUpdateOfMisfiredTrigger(conn, null, trig, false, STATE_WAITING, recovering)[/i], called just prior to the execution of the above line, trig.nextFireTime is set to null at some point in the stack.
So a simple fix would be a NULL check on[i] trig.getNextFireTime()[/i] before [i]getTime()[/i] is called in the if clause [i]if (trig.getNextFireTime().getTime() < earliestNewTime)[/i]
Please do let me know your thoughts on the same.
-thanks
sbanerjee
[b]
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't recover jobs: null [See nested exception: java.lang.NullPointerException]]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:602)
at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:455)
at org.quartz.impl.StdScheduler.start(StdScheduler.java:146)
at com.vmware.vim.vcenter.scheduler.impl.QuartzSchedulerImpl.init(QuartzSchedulerImpl.java:42)
at com.vmware.vim.vcenter.scheduler.impl.QuartzSchedulerImpl.<init>(QuartzSchedulerImpl.java:34)
at com.vmware.vim.vcenter.scheduler.TaskManager.initScheduler(TaskManager.java:42)
at com.vmware.vim.vcenter.scheduler.TaskManager.<init>(TaskManager.java:37)
at com.vmware.vim.vcenter.scheduler.TaskManager.getInstance(TaskManager.java:29)
at com.vmware.vim.vcenter.scheduler.SchedulerUnitTest.setUpBeforeClass(SchedulerUnitTest.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74)
at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.quartz.JobPersistenceException: Couldn't recover jobs: null [See nested exception: java.lang.NullPointerException][ERROR] 19 Nov 06:39:32.349 PM main [com.vmware.vim.vcenter.scheduler.TaskManager]
Quartz Scheduler failed to start up org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't recover jobs: null [See nested exception: java.lang.NullPointerException]]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:845)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$2.execute(JobStoreSupport.java:781)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$40.execute(JobStoreSupport.java:3677)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3711)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3673)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:777)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:600)
... 22 more
Caused by: java.lang.NullPointerException
at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverMisfiredJobs(JobStoreSupport.java:934)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:809)
... 28 more[/b] |
Show » |
|
added null check.