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

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

Vincent Lebreil created CAMEL-9151:
--------------------------------------

             Summary: 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


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:

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);

            }
        }
    }





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