You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by "Croway (via GitHub)" <gi...@apache.org> on 2026/10/02 12:26:52 UTC
[PR] CAMEL-25267: camel-management - find the processors of a route without reading every processor mbean [camel]
Croway opened a new pull request, #27280:
URL: https://github.com/apache/camel/pull/27280
_Claude Code on behalf of Croway_
[CAMEL-25267](https://issues.apache.org/jira/browse/CAMEL-25267)
## Problem
To find the processors of its route, `ManagedRoute` queried **all** processor MBeans of the CamelContext, created a JMX proxy for each one and read its route id. This happened in `processorIds()`, `dumpRouteStatsAsXml/JSon(includeProcessors=true)`, `dumpStepStatsAsXml`, `dumpRouteSourceLocationsAsXml` and `reset(true)`; the last one used a `QueryExp`, which still reads the attribute of every MBean. The consoles (`route`, `processor`, `top`, `route-group`, `route-topology`) and camel-cli-connector call these for every route, so the cost is routes × processors.
The callers then call `ManagedCamelContext.getManagedProcessor(id)` for each id, and that walked every route twice (`CamelContext.getProcessor(id)` and `Model.getProcessorDefinition(id)`). That was a second quadratic cost.
## Fix
- `DefaultManagementAgent` indexes the processor and step MBeans it registers, by route id and by processor id. Entries are removed when the MBeans are unregistered.
- `ManagedRoute` gets the MBean names of its route from that index for all the methods above. With a custom `ManagementAgent`, it falls back to the previous JMX scan.
- `getManagedProcessor(id)` / `getManagedStep(id)` take the processor and its definition from the indexed managed object. The ObjectName is still built by the configured `ManagementObjectNameStrategy`, as before. For an id that is not indexed, they fall back to the previous lookup.
No public API, MBean name or result changes.
## Numbers
300 routes × 12 processors, JMX enabled (timing harness attached to the JIRA):
| | before | after |
|---|---|---|
| `processorIds()` for all routes | ~12 s | ~45 ms |
| + `getManagedProcessor(id)` for each id | ~13 s | ~65 ms |
| `route` console with `processors=true` | ~27 s | ~0.7 s |
## Tests
`ManagedRouteProcessorsOfOtherRoutesTest` wraps the MBeanServer and records which processor MBeans are read:
- `processorIds()` reads only the MBeans of its own route.
- `reset(true)` resets only its own route.
- After a route is removed, its processors are no longer found.
The first two fail without the fix. The full `camel-management` (531 tests) and `camel-console` (233 tests) suites pass.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] CAMEL-25267: camel-management - find the processors of a route without reading every processor mbean [camel]
Posted by "gnodet-bot (via GitHub)" <gi...@apache.org>.
gnodet-bot commented on code in PR #27280:
URL: https://github.com/apache/camel/pull/27280#discussion_r4165689494
##########
core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementAgent.java:
##########
@@ -379,6 +399,65 @@ public void unregister(ObjectName name) throws JMException {
}
}
+ /**
+ * Gets the names of the registered processor mbeans that belong to the given route.
+ * <p/>
+ * This avoids querying (and reading the route id of) every processor mbean of the CamelContext, which is slow when
+ * there are many routes.
+ *
+ * @param routeId the route id
+ * @param steps whether to get the step mbeans, instead of the processor mbeans
+ * @return the names the mbeans are registered with in the mbean server, or an empty list
+ */
+ public List<ObjectName> getRouteProcessorMBeanNames(String routeId, boolean steps) {
+ Set<ObjectName> names = (steps ? routeSteps : routeProcessors).get(routeId);
+ return names != null ? new ArrayList<>(names) : new ArrayList<>();
+ }
+
+ /**
+ * Gets the managed object of the registered processor mbean with the given id.
+ * <p/>
+ * This avoids walking every route to find the processor and its definition, which is slow when there are many
+ * routes.
+ *
+ * @param id the processor id
+ * @param steps whether to get a step mbean, instead of a processor mbean
+ * @return the managed object, or <tt>null</tt> if no such mbean is registered
Review Comment:
💡 **Nit:** `<tt>` is deprecated HTML. Consider `{@code null}` instead:
```suggestion
* @return the managed object, or {@code null} if no such mbean is registered
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] CAMEL-25267: camel-management - find the processors of a route without reading every processor mbean [camel]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #27280:
URL: https://github.com/apache/camel/pull/27280#issuecomment-5952332866
:star2: Thank you for your contribution to the Apache Camel project! :star2:
:robot: CI automation will test this PR automatically.
:camel: Apache Camel Committers, please review the following items:
* First-time contributors **require MANUAL approval** for the GitHub Actions to run
* You can use the command `/component-test (camel-)component-name1 (camel-)component-name2..` to request a test from the test bot although they are normally detected and executed by CI.
* You can label PRs using `skip-tests` and `test-dependents` to fine-tune the checks executed by this PR.
* Build and test logs are available in the summary page. **Only** [Apache Camel committers](https://camel.apache.org/community/team/#committers) have access to the summary.
:warning: Be careful when sharing logs. Review their contents before sharing them publicly.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] CAMEL-25267: camel-management - find the processors of a route without reading every processor mbean [camel]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #27280:
URL: https://github.com/apache/camel/pull/27280#issuecomment-5953070168
<!-- ci-tested-modules -->
:test_tube: **CI tested the following changed modules:**
- `core/camel-management`
> :information_source: Dependent modules were not tested because the total number of affected modules exceeded the threshold (50). Use the `test-dependents` label to force testing all dependents.
:repeat: **2 tests passed only after a retry on JDK 25** (2 retried attempts)
<details><summary>Recovered flaky tests on JDK 25 (2)</summary>
| Module | Test | Failed attempts | First failure |
| --- | --- | --- | --- |
| `core/camel-management` | `BacklogTracerMessageHistoryMulticastSedaTest.testMulticastToSedaCapturesBothBranches` | 1 | Assertion condition defined as a Lambda expression in org.apache.camel.management.BacklogTracerMessageHistoryMulticastSedaTest Should contain slow-route events (async branch via seda) ==> expected: <true> but was: <false> within 10 seconds. |
| `core/camel-management` | `ManagedMessageSizeStreamCachingTest.testStreamCacheBodyReadableAfterSizeComputation` | 1 | expected: <Hello Stream Cached World> but was: <Hello Stream Cached WorldHello Stream Cached World> |
> :information_source: These tests did **not** fail the build. Surefire retried them and they passed.
> Retries are enabled project-wide by `surefire.rerunFailingTestsCount` in `parent/pom.xml`.
</details>
---
<details><summary>:microscope: Scalpel shadow comparison — Scalpel: 481 of 698 tested, 28 compile-only — current: 481 all tested</summary>
[Maveniverse Scalpel](https://github.com/maveniverse/scalpel) detected **481 affected modules** (current approach: 481).
**Skip-tests mode would test 481 modules** (1 direct + 480 downstream), **skip tests for 28** (generated code, meta-modules)
<details><summary>Modules Scalpel would test (481)</summary>
- `archetypes` ← downstream of org.apache.camel:camel-test-junit6
- `camel-a2a` ← downstream of org.apache.camel:camel-test-junit6
- `camel-activemq` ← downstream of org.apache.camel:camel-jms
- `camel-activemq6` ← downstream of org.apache.camel:camel-jms
- `camel-ai-observability` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ai-observability-api` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ai-resource` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ai-tool` ← downstream of org.apache.camel:camel-test-junit6
- `camel-alibaba-eventbridge` ← downstream of org.apache.camel:camel-test-junit6
- `camel-alibaba-fc` ← downstream of org.apache.camel:camel-test-junit6
- `camel-alibaba-kms` ← downstream of org.apache.camel:camel-test-junit6
- `camel-alibaba-mns` ← downstream of org.apache.camel:camel-test-junit6
- `camel-alibaba-oss` ← downstream of org.apache.camel:camel-test-junit6
- `camel-alibaba-ots` ← downstream of org.apache.camel:camel-test-junit6
- `camel-alibaba-sls` ← downstream of org.apache.camel:camel-test-junit6
- `camel-alibaba-sms` ← downstream of org.apache.camel:camel-test-junit6
- `camel-amqp` ← downstream of org.apache.camel:camel-test-junit6
- `camel-api-component-maven-plugin` ← downstream of org.apache.camel:camel-test-junit6
- `camel-arangodb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-archetype-api-component` ← downstream of org.apache.camel:camel-test-junit6
- `camel-archetype-component` ← downstream of org.apache.camel:camel-test-junit6
- `camel-archetype-dataformat` ← downstream of org.apache.camel:camel-test-junit6
- `camel-archetype-java` ← downstream of org.apache.camel:camel-test-junit6
- `camel-archetype-main` ← downstream of org.apache.camel:camel-test-junit6
- `camel-as2` ← downstream of org.apache.camel:camel-test-junit6
- `camel-as2-api` ← downstream of org.apache.camel:camel-test-junit6
- `camel-asn1` ← downstream of org.apache.camel:camel-test-junit6
- `camel-asterisk` ← downstream of org.apache.camel:camel-test-junit6
- `camel-atmosphere-websocket` ← downstream of org.apache.camel:camel-test-junit6
- `camel-atom` ← downstream of org.apache.camel:camel-test-junit6
- `camel-attachments` ← downstream of org.apache.camel:camel-test-junit6
- `camel-avro` ← downstream of org.apache.camel:camel-test-junit6
- `camel-avro-rpc` ← downstream of org.apache.camel:camel-test-junit6
- `camel-aws-bedrock` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws-cloudtrail` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws-config` ← downstream of org.apache.camel:camel-test-junit6
- `camel-aws-parameter-store` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws-secrets-manager` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws-security-hub` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-athena` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-comprehend` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-cw` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-ddb` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-ec2` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-ecs` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-eks` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-eventbridge` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-iam` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-kinesis` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-kms` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-lambda` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-mq` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-msk` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-polly` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-redshift` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-rekognition` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-s3` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-s3-vectors` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-ses` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-sns` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-sqs` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-step-functions` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-sts` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-textract` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-timestream` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-aws2-transcribe` ← downstream of org.apache.camel:camel-test-junit6
- `camel-aws2-translate` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-azure-cosmosdb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-eventgrid` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-eventhubs` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-files` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-functions` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-key-vault` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-schema-registry` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-servicebus` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-storage-blob` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-storage-datalake` ← downstream of org.apache.camel:camel-test-junit6
- `camel-azure-storage-queue` ← downstream of org.apache.camel:camel-test-junit6
- `camel-barcode` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-base64` ← downstream of org.apache.camel:camel-test-junit6
- `camel-bean-validator` ← downstream of org.apache.camel:camel-test-junit6
- `camel-beanio` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-bindy` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-bonita` ← downstream of org.apache.camel:camel-test-junit6
- `camel-box` ← downstream of org.apache.camel:camel-test-junit6
- `camel-braintree` ← downstream of org.apache.camel:camel-test-junit6
- `camel-caffeine` ← downstream of org.apache.camel:camel-test-junit6
- `camel-camunda` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cassandraql` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cbor` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-chatscript` ← downstream of org.apache.camel:camel-test-junit6
- `camel-chunk` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cli-connector` ← downstream of org.apache.camel:camel-management
- `camel-cli-debug` ← downstream of org.apache.camel:camel-cli-connector
- `camel-clickhouse` ← downstream of org.apache.camel:camel-test-junit6
- `camel-clickup` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cloudevents` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cm-sms` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-coap` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cometd` ← downstream of org.apache.camel:camel-test-junit6
- `camel-console` ← downstream of org.apache.camel:camel-management
- `camel-consul` ← downstream of org.apache.camel:camel-test-junit6
- `camel-core-all` ← downstream of org.apache.camel:camel-management
- `camel-couchbase` ← downstream of org.apache.camel:camel-test-junit6
- `camel-couchdb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cron` ← downstream of org.apache.camel:camel-test-junit6
- `camel-crypto` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-crypto-pgp` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-csv` ← downstream of org.apache.camel:camel-spring-xml
- `camel-cxf-common` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cxf-rest` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cxf-soap` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cxf-spring-common` ← downstream of org.apache.camel:camel-spring-xml
- `camel-cxf-spring-rest` ← downstream of org.apache.camel:camel-spring-xml
- `camel-cxf-spring-soap` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-cxf-spring-transport` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cxf-transport` ← downstream of org.apache.camel:camel-test-junit6
- `camel-cyberark-vault` ← downstream of org.apache.camel:camel-test-junit6
- `camel-dapr` ← downstream of org.apache.camel:camel-test-junit6
- `camel-datasonnet` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-debezium-common` ← downstream of org.apache.camel:camel-test-junit6
- `camel-debezium-db2` ← downstream of org.apache.camel:camel-test-junit6
- `camel-debezium-maven-plugin` ← downstream of org.apache.camel:camel-test-junit6
- `camel-debezium-mongodb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-debezium-mysql` ← downstream of org.apache.camel:camel-test-junit6
- `camel-debezium-oracle` ← downstream of org.apache.camel:camel-test-junit6
- `camel-debezium-postgres` ← downstream of org.apache.camel:camel-test-junit6
- `camel-debezium-sqlserver` ← downstream of org.apache.camel:camel-test-junit6
- `camel-debug` ← downstream of org.apache.camel:camel-management
- `camel-dfdl` ← downstream of org.apache.camel:camel-test-junit6
- `camel-dhis2` ← downstream of org.apache.camel:camel-test-junit6
- `camel-dhis2-api` ← downstream of org.apache.camel:camel-test-junit6
- `camel-dhis2-parent` ← downstream of org.apache.camel:camel-test-junit6
- `camel-diagram` ← downstream of org.apache.camel:camel-management
- `camel-disruptor` ← downstream of org.apache.camel:camel-test-junit6
- `camel-djl` ← downstream of org.apache.camel:camel-test-junit6
- `camel-dns` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-docker` ← downstream of org.apache.camel:camel-test-junit6
- `camel-docling` ← downstream of org.apache.camel:camel-test-junit6
- `camel-drill` ← downstream of org.apache.camel:camel-test-junit6
- `camel-dropbox` ← downstream of org.apache.camel:camel-test-junit6
- `camel-dsl-modeline` ← downstream of org.apache.camel:camel-test-junit6
- `camel-duckdb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-dynamic-router` ← downstream of org.apache.camel:camel-management
- `camel-ehcache` ← downstream of org.apache.camel:camel-test-junit6
- `camel-elasticsearch` ← downstream of org.apache.camel:camel-test-junit6
- `camel-elasticsearch-rest-client` ← downstream of org.apache.camel:camel-test-junit6
- `camel-event` ← downstream of org.apache.camel:camel-test-junit6
- `camel-exec` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-fastjson` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-fhir` ← downstream of org.apache.camel:camel-test-junit6
- `camel-file-watch` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-flatpack` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-flink` ← downstream of org.apache.camel:camel-test-junit6
- `camel-flowable` ← downstream of org.apache.camel:camel-test-junit6
- `camel-fop` ← downstream of org.apache.camel:camel-test-junit6
- `camel-fory` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-freemarker` ← downstream of org.apache.camel:camel-management
- `camel-ftp` ← downstream of org.apache.camel:camel-test-junit6
- `camel-geocoder` ← downstream of org.apache.camel:camel-test-junit6
- `camel-git` ← downstream of org.apache.camel:camel-test-junit6
- `camel-github2` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-bigquery` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-calendar` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-drive` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-firestore` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-functions` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-mail` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-pubsub` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-secret-manager` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-sheets` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-speech-to-text` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-storage` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-text-to-speech` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-vertexai` ← downstream of org.apache.camel:camel-test-junit6
- `camel-google-vision` ← downstream of org.apache.camel:camel-test-junit6
- `camel-graphql` ← downstream of org.apache.camel:camel-test-junit6
- `camel-grok` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-groovy` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-grpc` ← downstream of org.apache.camel:camel-test-junit6
- `camel-gson` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-hashicorp-vault` ← downstream of org.apache.camel:camel-test-junit6
- `camel-hazelcast` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-hivemq` ← downstream of org.apache.camel:camel-test-junit6
- `camel-hl7` ← downstream of org.apache.camel:camel-test-junit6
- `camel-http` ← downstream of org.apache.camel:camel-management
- `camel-http-base` ← downstream of org.apache.camel:camel-test-junit6
- `camel-http-common` ← downstream of org.apache.camel:camel-test-junit6
- `camel-huaweicloud-dms` ← downstream of org.apache.camel:camel-test-junit6
- `camel-huaweicloud-frs` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-huaweicloud-functiongraph` ← downstream of org.apache.camel:camel-test-junit6
- `camel-huaweicloud-iam` ← downstream of org.apache.camel:camel-test-junit6
- `camel-huaweicloud-imagerecognition` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-huaweicloud-obs` ← downstream of org.apache.camel:camel-test-junit6
- `camel-huaweicloud-smn` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-huggingface` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ibm-cos` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ibm-secrets-manager` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ibm-watson-discovery` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ibm-watson-language` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ibm-watson-speech-to-text` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ibm-watson-text-to-speech` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ibm-watsonx-ai` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ibm-watsonx-data` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ical` ← downstream of org.apache.camel:camel-test-junit6
- `camel-iggy` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ignite` ← downstream of org.apache.camel:camel-test-junit6
- `camel-infinispan` ← downstream of org.apache.camel:camel-test-junit6
- `camel-infinispan-common` ← downstream of org.apache.camel:camel-test-junit6
- `camel-infinispan-embedded` ← downstream of org.apache.camel:camel-test-junit6
- `camel-influxdb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-influxdb2` ← downstream of org.apache.camel:camel-test-junit6
- `camel-iso8583` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-jackson` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-jackson-avro` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jackson-protobuf` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jackson3` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-jackson3-avro` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jackson3-protobuf` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jackson3xml` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-jacksonxml` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-jactl` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jandex` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jasypt` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-java-joor-dsl` ← downstream of org.apache.camel:camel-test-junit6
- `camel-javascript` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jaxb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jbang-console` ← downstream of org.apache.camel:camel-management
- `camel-jbang-mcp` ← downstream of org.apache.camel:camel-xml-io-dsl
- `camel-jbang-plugin-mcp` ← downstream of org.apache.camel:camel-jbang-core
- `camel-jbang-plugin-route-parser` ← downstream of org.apache.camel:camel-route-parser
- `camel-jbang-plugin-tui` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jbang-plugin-validate` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jcache` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jcr` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jdbc` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-jetty` ← downstream of org.apache.camel:camel-management
- `camel-jetty-common` ← downstream of org.apache.camel:camel-spring-xml
- `camel-jfr` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jgroups` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jgroups-raft` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jira` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jms` ← downstream of org.apache.camel:camel-management
- `camel-jmx` ← downstream of org.apache.camel:camel-management
- `camel-jolt` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jooq` ← downstream of org.apache.camel:camel-test-junit6
- `camel-joor` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jpa` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jq` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jsch` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jslt` ← downstream of org.apache.camel:camel-test-junit6
- `camel-json-validator` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jsonapi` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jsonata` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jsonb` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-jsonpath` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-jsoup` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jt400` ← downstream of org.apache.camel:camel-test-junit6
- `camel-jta` ← downstream of org.apache.camel:camel-sql
- `camel-jte` ← downstream of org.apache.camel:camel-test-junit6
- `camel-kafka` ← downstream of org.apache.camel:camel-test-junit6
- `camel-kamelet` ← downstream of org.apache.camel:camel-management
- `camel-kamelet-main-support` ← downstream of org.apache.camel:camel-main
- `camel-keycloak` ← downstream of org.apache.camel:camel-test-junit6
- `camel-knative` ← downstream of org.apache.camel:camel-test-junit6
- `camel-knative-api` ← downstream of org.apache.camel:camel-test-junit6
- `camel-knative-http` ← downstream of org.apache.camel:camel-test-junit6
- `camel-kserve` ← downstream of org.apache.camel:camel-test-junit6
- `camel-kubernetes` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-kudu` ← downstream of org.apache.camel:camel-test-junit6
- `camel-langchain4j-agent` ← downstream of org.apache.camel:camel-test-junit6
- `camel-langchain4j-chat` ← downstream of org.apache.camel:camel-test-junit6
- `camel-langchain4j-core` ← downstream of org.apache.camel:camel-test-junit6
- `camel-langchain4j-embeddings` ← downstream of org.apache.camel:camel-test-junit6
- `camel-langchain4j-embeddingstore` ← downstream of org.apache.camel:camel-test-junit6
- `camel-langchain4j-ingest` ← downstream of org.apache.camel:camel-test-junit6
- `camel-langchain4j-tokenizer` ← downstream of org.apache.camel:camel-test-junit6
- `camel-langchain4j-web-search` ← downstream of org.apache.camel:camel-test-junit6
- `camel-launcher-container` ← downstream of org.apache.camel:camel-launcher
- `camel-ldap` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ldif` ← downstream of org.apache.camel:camel-test-junit6
- `camel-lra` ← downstream of org.apache.camel:camel-test-junit6
- `camel-lucene` ← downstream of org.apache.camel:camel-test-junit6
- `camel-lumberjack` ← downstream of org.apache.camel:camel-test-junit6
- `camel-lzf` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mail` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-mail-microsoft-oauth` ← downstream of org.apache.camel:camel-mail
- `camel-main` ← downstream of org.apache.camel:camel-test-junit6
- `camel-management` ← core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementAgent.java, core/camel-management/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java, core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java, core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteProcessorsOfOtherRoutesTest.java
- `camel-mapstruct` ← downstream of org.apache.camel:camel-test-junit6
- `camel-master` ← downstream of org.apache.camel:camel-test-junit6
- `camel-maven-plugin` ← downstream of org.apache.camel:camel-spring-main
- `camel-mcp-server` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mcp-server-api` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mdc` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-metrics` ← downstream of org.apache.camel:camel-management
- `camel-micrometer` ← downstream of org.apache.camel:camel-management
- `camel-micrometer-observability` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-micrometer-prometheus` ← downstream of org.apache.camel:camel-micrometer
- `camel-microprofile-config` ← downstream of org.apache.camel:camel-test-junit6
- `camel-microprofile-fault-tolerance` ← downstream of org.apache.camel:camel-management
- `camel-microprofile-health` ← downstream of org.apache.camel:camel-test-junit6
- `camel-milo` ← downstream of org.apache.camel:camel-test-junit6
- `camel-milvus` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mina` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-mina-sftp` ← downstream of org.apache.camel:camel-test-junit6
- `camel-minio` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-mllp` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mongodb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mongodb-gridfs` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mustache` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mvel` ← downstream of org.apache.camel:camel-test-junit6
- `camel-mybatis` ← downstream of org.apache.camel:camel-test-junit6
- `camel-nats` ← downstream of org.apache.camel:camel-test-junit6
- `camel-neo4j` ← downstream of org.apache.camel:camel-test-junit6
- `camel-netty` ← downstream of org.apache.camel:camel-management
- `camel-netty-http` ← downstream of org.apache.camel:camel-management
- `camel-oaipmh` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-oauth` ← downstream of org.apache.camel:camel-test-junit6
- `camel-observability-services` ← downstream of org.apache.camel:camel-management
- `camel-observation` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-ocsf` ← downstream of org.apache.camel:camel-test-junit6
- `camel-odata` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ognl` ← downstream of org.apache.camel:camel-test-junit6
- `camel-olingo2` ← downstream of org.apache.camel:camel-test-junit6
- `camel-olingo2-api` ← downstream of org.apache.camel:camel-test-junit6
- `camel-olingo4` ← downstream of org.apache.camel:camel-test-junit6
- `camel-olingo4-api` ← downstream of org.apache.camel:camel-test-junit6
- `camel-once` ← downstream of org.apache.camel:camel-test-junit6
- `camel-opa` ← downstream of org.apache.camel:camel-test-junit6
- `camel-openai` ← downstream of org.apache.camel:camel-test-junit6
- `camel-openapi-java` ← downstream of org.apache.camel:camel-management
- `camel-openapi-validator` ← downstream of org.apache.camel:camel-test-junit6
- `camel-openfga` ← downstream of org.apache.camel:camel-test-junit6
- `camel-opensearch` ← downstream of org.apache.camel:camel-test-junit6
- `camel-openstack` ← downstream of org.apache.camel:camel-test-junit6
- `camel-opentelemetry` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-opentelemetry-metrics` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-opentelemetry2` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-optaplanner` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-paho` ← downstream of org.apache.camel:camel-test-junit6
- `camel-paho-mqtt5` ← downstream of org.apache.camel:camel-test-junit6
- `camel-parquet-avro` ← downstream of org.apache.camel:camel-test-junit6
- `camel-pdf` ← downstream of org.apache.camel:camel-test-junit6
- `camel-pg-replication-slot` ← downstream of org.apache.camel:camel-test-junit6
- `camel-pgevent` ← downstream of org.apache.camel:camel-test-junit6
- `camel-pgvector` ← downstream of org.apache.camel:camel-test-junit6
- `camel-pinecone` ← downstream of org.apache.camel:camel-test-junit6
- `camel-platform-http` ← downstream of org.apache.camel:camel-test-junit6
- `camel-platform-http-jolokia` ← downstream of org.apache.camel:camel-platform-http
- `camel-platform-http-main` ← downstream of org.apache.camel:camel-test-junit6
- `camel-platform-http-vertx` ← downstream of org.apache.camel:camel-management
- `camel-plc4x` ← downstream of org.apache.camel:camel-test-junit6
- `camel-pqc` ← downstream of org.apache.camel:camel-test-junit6
- `camel-printer` ← downstream of org.apache.camel:camel-test-junit6
- `camel-protobuf` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-pubnub` ← downstream of org.apache.camel:camel-test-junit6
- `camel-pulsar` ← downstream of org.apache.camel:camel-test-junit6
- `camel-python` ← downstream of org.apache.camel:camel-test-junit6
- `camel-python3` ← downstream of org.apache.camel:camel-test-junit6
- `camel-qdrant` ← downstream of org.apache.camel:camel-test-junit6
- `camel-quartz` ← downstream of org.apache.camel:camel-management
- `camel-quickfix` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-quickjs` ← downstream of org.apache.camel:camel-test-junit6
- `camel-reactive-streams` ← downstream of org.apache.camel:camel-management
- `camel-reactor` ← downstream of org.apache.camel:camel-test-junit6
- `camel-redis` ← downstream of org.apache.camel:camel-test-junit6
- `camel-resilience4j` ← downstream of org.apache.camel:camel-management
- `camel-resilience4j-micrometer` ← downstream of org.apache.camel:camel-management
- `camel-resourceresolver-github` ← downstream of org.apache.camel:camel-test-junit6
- `camel-rest-openapi` ← downstream of org.apache.camel:camel-test-junit6
- `camel-rest-postman` ← downstream of org.apache.camel:camel-test-junit6
- `camel-restdsl-openapi-plugin` ← downstream of org.apache.camel:camel-openapi-java
- `camel-robotframework` ← downstream of org.apache.camel:camel-test-junit6
- `camel-rocketmq` ← downstream of org.apache.camel:camel-test-junit6
- `camel-rss` ← downstream of org.apache.camel:camel-test-junit6
- `camel-rxjava` ← downstream of org.apache.camel:camel-test-junit6
- `camel-salesforce` ← downstream of org.apache.camel:camel-test-junit6
- `camel-salesforce-codegen` ← downstream of org.apache.camel:camel-salesforce
- `camel-sap-netweaver` ← downstream of org.apache.camel:camel-test-junit6
- `camel-saxon` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-schematron` ← downstream of org.apache.camel:camel-test-junit6
- `camel-semantic` ← downstream of org.apache.camel:camel-test-junit6
- `camel-servicenow` ← downstream of org.apache.camel:camel-test-junit6
- `camel-servicenow-maven-plugin` ← downstream of org.apache.camel:camel-test-junit6
- `camel-servlet` ← downstream of org.apache.camel:camel-management
- `camel-shell` ← downstream of org.apache.camel:camel-test-junit5
- `camel-shiro` ← downstream of org.apache.camel:camel-test-junit6
- `camel-sjms` ← downstream of org.apache.camel:camel-test-junit6
- `camel-sjms2` ← downstream of org.apache.camel:camel-test-junit6
- `camel-slack` ← downstream of org.apache.camel:camel-test-junit6
- `camel-smb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-smooks` ← downstream of org.apache.camel:camel-test-junit6
- `camel-smpp` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-snakeyaml` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-snmp` ← downstream of org.apache.camel:camel-test-junit6
- `camel-soap` ← downstream of org.apache.camel:camel-test-junit6
- `camel-solr` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spiffe` ← downstream of org.apache.camel:camel-test-junit6
- `camel-splunk-hec` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spring` ← downstream of org.apache.camel:camel-cron
- `camel-spring-ai-chat` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spring-ai-embeddings` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spring-ai-image` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spring-ai-vector-store` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spring-batch` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spring-cloud-config` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spring-jdbc` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-spring-ldap` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-spring-main` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-spring-rabbitmq` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-spring-redis` ← downstream of org.apache.camel:camel-test-junit6
- `camel-spring-security` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-spring-ws` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-spring-xml` ← downstream of org.apache.camel:camel-management
- `camel-sql` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-ssh` ← downstream of org.apache.camel:camel-test-junit6
- `camel-state-store` ← downstream of org.apache.camel:camel-test-main-junit5
- `camel-stax` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-stitch` ← downstream of org.apache.camel:camel-test-junit6
- `camel-stream` ← downstream of org.apache.camel:camel-test-junit6
- `camel-streamcaching-test` ← downstream of org.apache.camel:camel-test-junit6
- `camel-stringtemplate` ← downstream of org.apache.camel:camel-management
- `camel-stripe` ← downstream of org.apache.camel:camel-test-junit6
- `camel-swift` ← downstream of org.apache.camel:camel-test-junit6
- `camel-syslog` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-tahu` ← downstream of org.apache.camel:camel-test-junit6
- `camel-tarfile` ← downstream of org.apache.camel:camel-test-junit6
- `camel-telegram` ← downstream of org.apache.camel:camel-test-junit6
- `camel-telemetry` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-telemetry-dev` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-tensorflow-serving` ← downstream of org.apache.camel:camel-test-junit6
- `camel-test-infra-all` ← downstream of org.apache.camel:camel-test-infra-artemis
- `camel-test-infra-artemis` ← downstream of org.apache.camel:camel-test-junit6
- `camel-test-infra-smb` ← downstream of org.apache.camel:camel-test-junit6
- `camel-test-junit5` ← downstream of org.apache.camel:camel-management
- `camel-test-junit6` ← downstream of org.apache.camel:camel-management
- `camel-test-main-junit5` ← downstream of org.apache.camel:camel-management
- `camel-test-main-junit6` ← downstream of org.apache.camel:camel-management
- `camel-test-spring-junit5` ← downstream of org.apache.camel:camel-management
- `camel-test-spring-junit6` ← downstream of org.apache.camel:camel-management
- `camel-thrift` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-thymeleaf` ← downstream of org.apache.camel:camel-management
- `camel-tika` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-toon` ← downstream of org.apache.camel:camel-test-junit5
- `camel-tracing` ← downstream of org.apache.camel:camel-test-spring-junit6
- `camel-twilio` ← downstream of org.apache.camel:camel-test-junit6
- `camel-twitter` ← downstream of org.apache.camel:camel-test-junit6
- `camel-typesafe-ai` ← downstream of org.apache.camel:camel-test-junit6
- `camel-ubl` ← downstream of org.apache.camel:camel-test-junit5
- `camel-undertow` ← downstream of org.apache.camel:camel-management
- `camel-undertow-spring-security` ← downstream of org.apache.camel:camel-test-junit6
- `camel-univocity-parsers` ← downstream of org.apache.camel:camel-spring-xml
- `camel-velocity` ← downstream of org.apache.camel:camel-management
- `camel-vertx` ← downstream of org.apache.camel:camel-test-junit6
- `camel-vertx-http` ← downstream of org.apache.camel:camel-test-junit6
- `camel-vertx-websocket` ← downstream of org.apache.camel:camel-test-junit6
- `camel-wasm` ← downstream of org.apache.camel:camel-test-junit6
- `camel-weather` ← downstream of org.apache.camel:camel-test-junit6
- `camel-weaviate` ← downstream of org.apache.camel:camel-test-junit6
- `camel-web3j` ← downstream of org.apache.camel:camel-test-junit6
- `camel-webhook` ← downstream of org.apache.camel:camel-test-junit6
- `camel-whatsapp` ← downstream of org.apache.camel:camel-test-junit6
- `camel-wordpress` ← downstream of org.apache.camel:camel-test-junit6
- `camel-workday` ← downstream of org.apache.camel:camel-test-junit6
- `camel-xchange` ← downstream of org.apache.camel:camel-test-junit6
- `camel-xj` ← downstream of org.apache.camel:camel-test-junit6
- `camel-xml-io-dsl` ← downstream of org.apache.camel:camel-test-junit6
- `camel-xml-jaxb-dsl` ← downstream of org.apache.camel:camel-test-junit6
- `camel-xml-jaxb-dsl-test-definition` ← downstream of org.apache.camel:camel-management
- `camel-xml-jaxb-dsl-test-spring` ← downstream of org.apache.camel:camel-management
- `camel-xmlsecurity` ← downstream of org.apache.camel:camel-test-junit6
- `camel-xmpp` ← downstream of org.apache.camel:camel-test-junit6
- `camel-xslt-saxon` ← downstream of org.apache.camel:camel-spring-xml
- `camel-yaml-dsl-validator` ← downstream of org.apache.camel:camel-yaml-dsl
- `camel-yaml-dsl-validator-maven-plugin` ← downstream of org.apache.camel:camel-yaml-dsl-validator
- `camel-zendesk` ← downstream of org.apache.camel:camel-test-junit6
- `camel-zip-deflater` ← downstream of org.apache.camel:camel-test-junit6
- `camel-zipfile` ← downstream of org.apache.camel:camel-test-junit6
- `camel-zookeeper` ← downstream of org.apache.camel:camel-management
- `camel-zookeeper-master` ← downstream of org.apache.camel:camel-test-junit6
</details>
<details><summary>Modules with tests skipped (28)</summary>
- `apache-camel`
- `camel-allcomponents`
- `camel-catalog`
- `camel-catalog-console`
- `camel-catalog-maven`
- `camel-catalog-suggest`
- `camel-componentdsl`
- `camel-endpointdsl`
- `camel-endpointdsl-support`
- `camel-itest`
- `camel-jbang-core`
- `camel-jbang-it`
- `camel-jbang-main`
- `camel-jbang-plugin-edit`
- `camel-jbang-plugin-generate`
- `camel-jbang-plugin-kubernetes`
- `camel-jbang-plugin-test`
- `camel-kamelet-main`
- `camel-launcher`
- `camel-report-maven-plugin`
- `camel-route-parser`
- `camel-salesforce-maven-plugin`
- `camel-yaml-dsl`
- `camel-yaml-dsl-deserializers`
- `camel-yaml-dsl-maven-plugin`
- `coverage`
- `docs`
- `dummy-component`
</details>
> :information_source: Shadow mode — Scalpel observes but does not affect test execution. [Learn more](https://github.com/maveniverse/scalpel)
</details>
---
:gear: [View full build and test results](https://github.com/apache/camel/actions/runs/37009123307)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] CAMEL-25267: camel-management - find the processors of a route without reading every processor mbean [camel]
Posted by "davsclaus (via GitHub)" <gi...@apache.org>.
davsclaus commented on code in PR #27280:
URL: https://github.com/apache/camel/pull/27280#discussion_r4166148950
##########
core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementAgent.java:
##########
@@ -506,4 +587,7 @@ protected MBeanServer findOrCreateMBeanServer() {
return MBeanServerFactory.createMBeanServer(mBeanServerDefaultDomain);
}
+ private record ProcessorMBean(
Review Comment:
Nit: in JMX an `*MBean` suffix means an MBean interface, so `ProcessorMBean` reads like a sibling of `ManagedProcessorMBean`. A name such as `IndexedProcessor` would avoid that (and its uses in `processorMBeans`, `addProcessorMBean` and `removeProcessorMBean`). Non-blocking.
##########
core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java:
##########
@@ -1007,22 +945,58 @@ public Collection<String> processorIds() throws Exception {
MBeanServer server = getContext().getManagementStrategy().getManagementAgent().getMBeanServer();
if (server != null) {
- String prefix = getContext().getManagementStrategy().getManagementAgent().getIncludeHostName() ? "*/" : "";
- // gather all the processors for this CamelContext, which requires JMX
+ // gather all the processors for this route, which requires JMX
+ for (ManagedProcessorMBean processor : routeProcessorMBeans(false, ManagedProcessorMBean.class)) {
+ ids.add(processor.getProcessorId());
+ }
+ }
+
+ return ids;
+ }
+
+ /**
+ * Gets the processor (or step) mbeans of this route.
+ */
+ private <T extends ManagedProcessorMBean> List<T> routeProcessorMBeans(boolean steps, Class<T> type) throws Exception {
+ ManagementAgent agent = getContext().getManagementStrategy().getManagementAgent();
+ List<T> answer = new ArrayList<>();
+ for (ObjectName on : routeProcessorMBeanNames(steps)) {
+ T mp = agent.newProxyClient(on, type);
+ if (mp != null) {
+ answer.add(mp);
+ }
+ }
+ return answer;
+ }
+
+ /**
+ * Gets the names of the processor (or step) mbeans of this route.
+ * <p/>
+ * The default management agent knows the mbeans of each route, otherwise all the processor mbeans of the
+ * CamelContext are queried, which is slow with many routes as the route id of each mbean must be read.
+ */
+ private List<ObjectName> routeProcessorMBeanNames(boolean steps) throws Exception {
+ ManagementAgent agent = getContext().getManagementStrategy().getManagementAgent();
+ if (agent instanceof DefaultManagementAgent dma) {
+ return dma.getRouteProcessorMBeanNames(getRouteId(), steps);
Review Comment:
Question, non-blocking: for any `DefaultManagementAgent`, including a subclass, the index is trusted completely. A third-party subclass that overrides `register()` without calling `super` would make `processorIds()` and the dumps return nothing instead of the right answer. Nothing in the Apache repos does this, so this is only hardening. Falling back to the scan below when the index has nothing for this route would cover it, and it stays cheap: with processor MBeans switched off, the query matches nothing.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] CAMEL-25267: camel-management - find the processors of a route without reading every processor mbean [camel]
Posted by "Croway (via GitHub)" <gi...@apache.org>.
Croway merged PR #27280:
URL: https://github.com/apache/camel/pull/27280
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org