We're using the camel quartz component (camel version 2.9.0 and quartz in
version 1.8.5) to trigger some jobs once a day. The routes are looking
similar to this:
from("quartz://aendHistNaechtlicherLauf?cron=0+0+23+*+*+?+*")
.routeId(aendHistNaechtlicherLauf)
.to("bean:aBean?method=aMethod(${header.fireTime})");
BTW: We have only one camel-context.
The problem is: On the first day when the application was started the routes
are running perfect, but on the next day we are getting this exception:
ERROR | 2012-12-05 23:00:00,003 | |
| DefaultQuartzScheduler-camelContext_Worker-6 | org.quartz.core.ErrorLogger
- Job (DEFAULT.quartz-end
point71 threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See
nested exception: org.apache.camel.ResolveEndpointFailedException: Failed to
resolve endpoint: quartz://aendHistNaechtlicherLauf?cron=0+0+23+*+*+%3F+*
due to: A Quartz job already exists with the name/group:
ewoAendHistNaechtlicherLauf/Camel]
at org.quartz.core.JobRunShell.run(JobRunShell.java:227)
at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to
resolve endpoint: quartz://aendHistNaechtlicherLauf?cron=0+0+23+*+*+%3F+*
due to: A Quartz job already exists
with the name/group: aendHistNaechtlicherLauf/Camel
at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:450)
at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:463)
at
org.apache.camel.component.quartz.CamelJob.execute(CamelJob.java:50)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
... 1 more
Caused by: java.lang.IllegalArgumentException: A Quartz job already exists
with the name/group: aendHistNaechtlicherLauf/Camel
at
org.apache.camel.component.quartz.QuartzComponent.createEndpoint(QuartzComponent.java:129)
at
org.apache.camel.component.quartz.QuartzComponent.createEndpoint(QuartzComponent.java:55)
at
org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:91)
at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:432)
... 4 more
We belive that this error occurs because the gc deletes the endpoint
reference stored in the LRUSoftCache of EndpointRegistry. Shouldn't it be
possible that the quartz-component recreates a endpoint, when the
EndpointRegistry stores only SoftReferences? In this case the tigger should
be deleted, shouldn't it?. Elsewise there has to be a hard reference between
entpoint and trigger, so the gc can't free the endpoint reference.
Has somebody a solution or an idea why this error occurs?
--
View this message in context:
http://camel.465427.n5.nabble.com/Camel-QuartzComponent-failed-on-recreating-endpoint-tp5723760.html
Sent from the Camel - Users mailing list archive at Nabble.com.