[
https://issues.apache.org/jira/browse/CAMEL-25267?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-25267 started by Federico Mariani.
------------------------------------------------
> camel-management - ManagedRoute.processorIds is quadratic, the route dev
> console with processors takes seconds on large integrations
> ------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25267
> URL: https://issues.apache.org/jira/browse/CAMEL-25267
> Project: Camel
> Issue Type: Improvement
> Components: camel-core
> Reporter: Federico Mariani
> Assignee: Federico Mariani
> Priority: Major
> Attachments: ManagedRouteProcessorsOfOtherRoutesFullTest.java,
> ProcessorIdsTimingTest.java
>
>
> {{ManagedRoute.processorIds()}} queries the JMX MBeans of *all* processors of
> the CamelContext, creates a proxy for each one and keeps those of its own
> route. The route dev console with {{processors=true}} calls it for every
> route ({{RouteDevConsole.includeProcessorsJson}}), so it creates routes ×
> processors proxies: quadratic in the size of the integration.
> With 316 YAML routes (about 4000 processors) one call of the route console
> with {{processors=true}} took about 30 s (thread dumps show the time in
> {{DefaultManagementAgent.newProxyClient}} / {{isRegistered}} under
> {{ManagedRoute.processorIds}}).
> Who is affected:
> * camel-cli-connector collects this as part of the status snapshot: every
> poll of the file transport (so {{camel get}} / {{camel cmd}} are delayed by
> the same amount, the connector thread is busy almost all the time) and every
> snapshot of the WebSocket transport (CAMEL-25197, where it starved the
> heartbeat).
> * anything else calling {{processorIds()}} per route (e.g. the {{route}} dev
> console over HTTP, JMX clients).
> Possible fixes:
> * collect the processor ids of a route from the route itself (its processors
> / model) instead of a JMX query of the whole context, or query only once and
> group by route id;
> * avoid one {{newProxyClient}} per processor when only the id and route id
> are needed.
> Reproducer: a Camel Main application with a few hundred routes of ~10
> processors each, JMX enabled, then call the route dev console with
> {{processors=true}} (or run it with camel-cli-connector and look at the
> status).
> _Claude Code on behalf of Croway_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)