You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2015/09/22 11:22:04 UTC

[jira] [Assigned] (CAMEL-9151) Wrong statistics for subroutes

     [ https://issues.apache.org/jira/browse/CAMEL-9151?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen reassigned CAMEL-9151:
----------------------------------

    Assignee: Claus Ibsen

> Wrong statistics for subroutes
> ------------------------------
>
>                 Key: CAMEL-9151
>                 URL: https://issues.apache.org/jira/browse/CAMEL-9151
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-metrics
>    Affects Versions: 2.15.2
>            Reporter: Vincent Lebreil
>            Assignee: Claus Ibsen
>             Fix For: 2.16.0, 2.15.4
>
>
> Some statistics seem to be wrong for subroutes.
> MetricsStatistics.onExchangeDone method is called several times for a same exchange: first by the subroute and then by its parent route.
> The problem is that context.stop() is called several times so counters is greater than 1 for the subroute instead of one.
> A solution could be to reset the context into the exchange as soon as the stop method has been called:
> {code:title=MetricsRoutePolicy.java|borderStyle=solid}
> private static final class MetricsStatistics {
>         private final Timer responses;
>         private MetricsStatistics(Timer responses) {
>             this.responses = responses;
>         }
>         public void onExchangeBegin(Exchange exchange) {
>             Timer.Context context = responses.time();
>             exchange.setProperty("MetricsRoutePolicy", context);
>         }
>         public void onExchangeDone(Exchange exchange) {
>             Timer.Context context = exchange.getProperty("MetricsRoutePolicy", Timer.Context.class);
>             if (context != null) {
>                 context.stop();
>                 // BUGFIX: reset to null so that context.stop() cannot be called
>                 // more than once.
>                 exchange.setProperty("MetricsRoutePolicy", null);
>             }
>         }
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)