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.

Reply via email to