You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Jim Talbut (JIRA)" <ji...@apache.org> on 2010/03/19 20:43:46 UTC
[jira] Updated: (CAMEL-2563) The Trace mechanism is inflexible and
inefficient - specifically it doesn't enable custom tracing around a node.
[ https://issues.apache.org/activemq/browse/CAMEL-2563?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jim Talbut updated CAMEL-2563:
------------------------------
Attachment: tracechanges.diff
Attached is a diff of the changes to Trace and TraceInterceptor.
I haven't done unit tests for it yet, just tested it using the use I have for it - I'll sort this in a bit.
I just wanted to include this now to show the scope of what I was trying to do, which is to give the freedom to use your own subclass of the TraceInterceptor.
> The Trace mechanism is inflexible and inefficient - specifically it doesn't enable custom tracing around a node.
> ----------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-2563
> URL: https://issues.apache.org/activemq/browse/CAMEL-2563
> Project: Apache Camel
> Issue Type: Improvement
> Components: camel-core
> Affects Versions: 2.3.0
> Environment: All.
> Reporter: Jim Talbut
> Priority: Minor
> Fix For: Future
>
> Attachments: tracechanges.diff
>
> Original Estimate: 2 days
> Remaining Estimate: 2 days
>
> What it won't let me do:
> I want to be able to correlate the "out" trace with the "in" trace, in one database row without commiting the row until the route has completed.
> This requires a JPA transaction to exist around each of the nodes that are called.
> I'm finding that the transaction has ended by the time of the "out" trace.
> Inefficiencies:
> 1. It causes the construction of the new Exchange object and a bunch of String objects that I don't want.
> 2. It causes the invocation of a new route, that is unnecessary.
> I think it would be better to:
> 1. Pass the class to use as the TraceInterceptor into Tracer.
> 2. Break the existing TraceInterceptor into two, a base class that tracks the RouteNodes and a subclass that implements traceExchange.
> 3. Change traceExchange so that it returns an Object and pass that Object in to the call to traceExchange for "out" traces.
> 4. Give the Tracer a payload object that can be used to pass information to the TraceInterceptor.
> 5. Change the various trace* functions to take in and return a payload Object.
> Custom users could then dervice from TraceInterceptor and override the trace* functions as necessary (probably just traceExchange).
> I'm working on a patch.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.