camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexis Kinsella (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CAMEL-5994) CamelJob implementation rely on some inconsistent endpoints LRU cache - Camel endpoints may not be called on quartz fire after some days of uptime
Date Tue, 22 Jan 2013 14:18:13 GMT
Alexis Kinsella created CAMEL-5994:
--------------------------------------

             Summary: CamelJob implementation rely on some inconsistent endpoints LRU cache
- Camel endpoints may not be called on quartz fire after some days of uptime
                 Key: CAMEL-5994
                 URL: https://issues.apache.org/jira/browse/CAMEL-5994
             Project: Camel
          Issue Type: Bug
          Components: camel-quartz
    Affects Versions: 2.10.3, 2.9.5
         Environment: Quartz is in deployed in cluster mode.
            Reporter: Alexis Kinsella
            Priority: Critical


CamelJobs rely on some endpoints LRU cache from camel context. If i'm not wrong, since LRU
Cache relies on SoftReferences, Garbage Collector can decide to evict some entries and especially
QuartzEndpoints.

It happens that sometimes endpoints evicted from LRU Caches are QuartzEndpoints. Since QuartzEnpoints
are searched from CamelJob in LRU cache, they are not reachable anymore.

The side effect, is that CamelJob isntance initializes a new QuartzEndpoint, but loadbalancer
is not initialized since it is initialized from QuartzConsumer.

The result is that quartz triggers jobs that instanciate Quartz endpoints with unintialized
load balancers which are unable to call processor from the routes associated.

I have joined a fix that rely on the search of QuartzEndpoints from initalized routes of Camel
context.

Fundamentally, the search of endpoints should not rely on endpoints LRU cache. It is a broken
design.

Hope it helps.

By the way, there are other issues related to QuartzEndpoint load balancer initalization:
If quartz starts before startup of Camel routes you will have the same issue: Correctly initialized
QuartzEndpoints are not in LRU cache since Camel has not started routes (and so endpoints
and consumers). Quartz will trigger job, and camel job will search for QuartzEndpoint and
put it in LRUCache with uninitialized load balancer.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message