Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.12.1
-
None
-
same results using java 7 on osx, ubuntu, and windoze
-
Unknown
Description
2.12.1
Works
<simple>"${body.subOrderName}Endpoint"</simple>
Fails
<groovy>"${request.body.subOrderName}Endpoint"</groovy>
2.11.1
Works
<simple>"${body.subOrderName}Endpoint"</simple>
Works
<groovy>"${request.body.subOrderName}Endpoint"</groovy>
*Fails by returning a previous calls result for subOrderName.
To reproduce you must make several calls in a timely manner with different bean data (OGNL/subOrderName).
Route:
... <setHeader headerName="RSSX_ORDER_ROUTING_SLIP"> <groovy>return "${request.body.subOrderName}Endpoint"</groovy> </setHeader> <!-- Route the order by the routing slip header --> <routingSlip> <header>RSSX_ORDER_ROUTING_SLIP</header> </routingSlip> ...
Log:
1st execution
Before set header: UpdatePortIn
After set header: RSSX_ORDER_ROUTING_SLIP=UpdatePortInEndpoint
2nd execution (in a timely manner – exposing a LRU Cache issue?)
Before set header: ResellerAddSubscriberPortIn
After set header: RSSX_ORDER_ROUTING_SLIP=UpdatePortInEndpoint
Same logic works in 2.11.1
Additionally this does not appear OGNL related:
I just ran into the case where
<setHeader headerName="RSSX_ORDER_ROUTING_SLIP"> <groovy>"${request.body.getSubOrderName()}Endpoint"</groovy> </setHeader>
returns the cached subOrderName from the previous transaction
So this appears to be isolated to the <groovy> component changes (LRU Cache?) that were introduced in 2.12.1
Attachments
Issue Links
- relates to
-
CAMEL-7143 camel-groovy - Evaluation returns 1st result only
- Resolved
-
CAMEL-6340 Improve Groovy performance
- Resolved