Skip to content

CAMEL-25094: camel-seda - keep the spooled stream cache of a message sent from a Multicast or Split - #26995

Merged
davsclaus merged 1 commit into
apache:mainfrom
allthingssecurity:camel-seda-spool-file-multicast
Sep 28, 2026
Merged

davsclaus merged 1 commit into
apache:mainfrom
allthingssecurity:camel-seda-spool-file-multicast

Conversation

@allthingssecurity

Copy link
Copy Markdown
Contributor

Description

CAMEL-25094

With stream caching spooled to disk, a message sent InOnly to seda: or disruptor: from inside a Multicast or Split loses its spool file when the parent exchange completes. The consumer route then fails with Cannot reset stream from file and the message is lost:

from("direct:start").multicast().to("seda:b", "mock:other");
from("seda:b").convertBodyTo(byte[].class).to("mock:result");

WARN SedaConsumer - Error processing exchange. ... StreamCacheException ... Cannot reset stream from file ...

Multicast and Split set CamelStreamCacheUnitOfWork on their sub-exchanges, so that the stream caches of the sub-routes are released with the parent's unit of work (MulticastProcessor, Splitter). For an InOnly send, SedaProducer.addToQueue and DisruptorProducer.prepareCopy give the queued copy its own reference to the stream cache with sc.copy(target) (CAMEL-20866), but the copy keeps the property. So FileInputStreamCache.TempFileManager.addExchange registers the copy's reference on the parent's unit of work too, and the parent deletes the file as soon as it is done, which is right after the InOnly send returned. SedaConsumer logs the failure at WARN. The disruptor consumer does not log it at all (it processes the exchange with a no-op callback), so there the message disappears silently.

The Wire Tap EIP had the same problem and removes the property from its copy (CAMEL-12108, WireTapProcessor). In CAMEL-20866, SEDA (InOnly), Disruptor (InOnly) and Wire Tap were named as the cases where the copy is executed independently, but only the Wire Tap drops the property.

This change:

  • SedaProducer.addToQueue and DisruptorProducer.prepareCopy remove ExchangePropertyKey.STREAM_CACHE_UNIT_OF_WORK from the copy before copying the stream cache, as the Wire Tap does. The copy's reference is then registered on the copy, and the file is deleted when the copy is done. There is no double release: one sc.copy adds one reference and one countdown.
  • Only the branch that copies the exchange is changed. The path that waits for the reply (InOut, waitForTaskToComplete) is left alone, because the producer waits for the copy there. camel-stub extends SedaProducer and gets the fix too.
  • It also stops stream caches that are created inside the seda or disruptor route from being registered on the parent's unit of work (the second symptom that CAMEL-12108 describes for the Wire Tap). I found this by reading the code; there is no test for it.

The Recipient List is not affected: RecipientListProcessor creates its own sub-exchanges and does not set the property. The new tests include it as a control. A Recipient List inside a Split still inherits the property from the split's sub-exchange, and that case is covered by this fix.

One caveat, which exists already and is not changed here: a copy that discardWhenFull drops, or that fails the offerTimeout, never completes, so its reference to the spool file is never released. That already happens for a plain to("seda:x?discardWhenFull=true") and leaves the file until the spool directory is removed when the context stops. With this change the Multicast and Split cases behave the same way, instead of losing the message. The dropped copy also takes the original's handed-over on completions with it, which is a separate issue and is not changed here.

Tests:

  • New SedaStreamCachingSpoolTest (camel-core, where the seda tests live) and DisruptorStreamCachingSpoolTest (camel-disruptor). Spooling is enabled with a 1 KB threshold into a test directory, and the body is a 16 KB stream. Routes: a sequential Multicast, a parallel Multicast and a Split of two streams, each sending InOnly to the queue. The consumer route first waits on a latch that the test releases after sendBody returns, so the parent exchange is done before the body is read, and the test is deterministic. Each test asserts that the full body is read in the consumer route, and then that the spool directory is empty (Awaitility). A direct send and a Recipient List are controls.
  • Without the change, the three Multicast/Split tests fail in both classes (mock://result Received message count. Expected: <1> but was: <0>, and SedaConsumer logs the StreamCacheException above). The controls pass on main.
  • With the change: camel-core *StreamCach*,*Multicast*,*Split*,*WireTap* plus all the seda tests (org/apache/camel/component/seda/**): 662 tests, 0 failures, 0 errors, 6 skipped. camel-disruptor, all tests: 111 tests, 0 failures, 0 errors.

This merges cleanly with the open #26793 (SedaProducer, other hunks) and #26980 (DisruptorProducer, other hunks).

Found with a TLA+ model of the reference counter (parent, sub-exchange, queued copy, consumer), which finds the trace where the parent is done before the consumer reads, and holds for the fixed model, including that the file is always deleted in the end. I then reproduced the failure with the real classes, and checked that the 4.6.0 SedaProducer, from before the deep copy, fails the same way, so this is not a regression of CAMEL-20866.

Target

  • I checked that the commit is targeting the correct branch (Camel 4 uses the main branch)

Tracking

  • If this is a large change, bug fix, or code improvement, I checked there is a JIRA issue filed for the change (usually before you start working on it).

Apache Camel coding standards and style

  • I checked that each commit in the pull request has a meaningful subject line and body.
  • I have run mvn clean install -DskipTests locally from root folder and I have committed all auto-generated changes.
    (I built and tested the affected modules, including the formatter and import-sort plugins. I did not run the full root build.)

AI-assisted contributions

  • If this PR includes AI-generated code, commits have proper co-authorship attribution (e.g., Co-authored-by trailers) and the PR description identifies the AI tool used.
    This PR was prepared with Claude Code (Claude Opus 5.5). The commit carries a Co-Authored-By trailer.

Claude Code on behalf of allthingssecurity

🤖 Generated with Claude Code

…sent from a Multicast or Split

Multicast and Split set CamelStreamCacheUnitOfWork on their sub-exchanges,
so that the stream caches of the sub-routes are released with the unit of
work of the parent exchange. When a sub-exchange sends to seda: or
disruptor: without waiting (InOnly), the producer hands a copy of it to
the queue and gives the copy its own reference to the stream cache
(CAMEL-20866). The copy kept the property, so that reference was also
registered on the parent's unit of work. When the parent was done, the
spool file was deleted while the copy was still queued or being routed,
and the consumer route failed with "Cannot reset stream from file": the
message was lost. SedaConsumer logs this at WARN; the disruptor consumer
does not log it.

SedaProducer and DisruptorProducer now remove the property from the copy
before copying the stream cache, as the Wire Tap EIP does (CAMEL-12108).
The copy then releases the file when it is done. The path that waits for
the reply is not changed, as the producer waits for the copy there.

Adds SedaStreamCachingSpoolTest (camel-core) and
DisruptorStreamCachingSpoolTest: sequential and parallel Multicast, and
Split, sending to the queue, with the consumer route waiting until the
parent exchange is done before it reads the body; the body must be read
in full and no spool file may be left behind. A direct send and a
Recipient List, which does not set the property, are controls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@oscerd oscerd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, and it reuses the right precedent. A message sent InOnly to seda:/disruptor: from a Multicast/Split is routed on its own unit of work asynchronously, but its spooled stream cache was still pinned to the parent's UoW via STREAM_CACHE_UNIT_OF_WORK, so the parent completing deleted the spool file before the consumer read it (Cannot reset stream from file). Removing that property from the copy detaches the cache from the parent's lifecycle, so it's released with the copy's own UoW when the consumer route finishes instead — exactly what the Wire Tap EIP does (CAMEL-12108), and the comment cites it. The cache is still cleaned up (by the consumer's UoW), so there's no leak, just a correct hand-off.

Applying the same one-line removal in both SedaProducer and DisruptorProducer keeps the two InOnly async producers consistent, and the SedaStreamCachingSpoolTest/DisruptorStreamCachingSpoolTest pin that the spool file survives and is readable downstream. LGTM (pending CI — fork PR).

This review was generated with AI assistance and reviewed/issued by the human operator. Claude Code on behalf of oscerd

@gnodet-bot gnodet-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Solid fix. The change is minimal, correctly scoped, and exactly mirrors the established WireTapProcessor pattern (CAMEL-12108).

What this fixes: When a message is sent InOnly to seda: or disruptor: from inside a Multicast or Split, the queued copy inherits STREAM_CACHE_UNIT_OF_WORK from the parent. This causes sc.copy(target) to register the copy's stream cache reference on the parent's unit of work. When the parent completes (immediately after the InOnly send), it deletes the spool file — before the consumer reads it.

Why it's correct: Removing STREAM_CACHE_UNIT_OF_WORK before sc.copy(target) is essential — copy() calls TempFileManager.addExchange() which reads that property to decide which UoW owns the reference. The placement in SedaProducer.addToQueue() (vs prepareCopy()) is intentional: prepareCopy() is protected and used by the InOut path too, while the property removal only applies to the fire-and-forget copy. In DisruptorProducer, prepareCopy() is private with a if (copy) guard, so the placement there is equally safe.

Tests are well-designed: the CountDownLatch pattern deterministically reproduces the race (parent completes before consumer reads), and the control tests (direct, recipientList) confirm no regressions. The Awaitility assertion on spool file cleanup verifies no resource leaks.

This review was generated by an AI agent, Hermès on behalf of @gnodet.

@davsclaus davsclaus left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Removing CamelStreamCacheUnitOfWork from the independent queued copy before sc.copy(target) is the same fix WireTapProcessor has had since CAMEL-12108, and it's correctly limited to the copy path, so InOut and wait-for-reply sends are unchanged. The spool tests with direct and recipient list as controls are good. LGTM.

The discardWhenFull/offerTimeout case you mention, where a dropped copy never releases its spool file, is worth a follow-up JIRA.

Claude Code on behalf of davsclaus

@github-actions

Copy link
Copy Markdown
Contributor

🌟 Thank you for your contribution to the Apache Camel project! 🌟
🤖 CI automation will test this PR automatically.

🐫 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 have access to the summary.

⚠️ Be careful when sharing logs. Review their contents before sharing them publicly.

@github-actions

Copy link
Copy Markdown
Contributor

🧪 CI tested the following changed modules:

  • components/camel-disruptor
  • components/camel-seda
  • core/camel-core

ℹ️ 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.


🔬 Scalpel shadow comparison — Scalpel: 480 of 695 tested, 28 compile-only — current: 484 all tested

Maveniverse Scalpel detected 480 affected modules (current approach: 484).

Skip-tests mode would test 480 modules (3 direct + 477 downstream), skip tests for 28 (generated code, meta-modules)

Modules only in current approach (4)
  • camel-debug
  • camel-google-common
  • camel-jbang-console
  • camel-test-infra-core
Modules Scalpel would test (480)
  • 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-test-infra-artemis
  • camel-activemq6 ← downstream of org.apache.camel:camel-test-infra-artemis
  • 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-test-junit6
  • 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-core
  • camel-consul ← downstream of org.apache.camel:camel-test-junit6
  • camel-core ← core/camel-core/src/test/java/org/apache/camel/component/seda/SedaStreamCachingSpoolTest.java
  • camel-core-all ← downstream of org.apache.camel:camel-main
  • 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-main
  • 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-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-test-junit6
  • camel-disruptor ← components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorProducer.java, components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/DisruptorStreamCachingSpoolTest.java
  • 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-test-spring-junit6
  • 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-test-spring-junit6
  • 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-main
  • 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-test-spring-junit6
  • 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-stub
  • 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-seda
  • camel-javascript ← downstream of org.apache.camel:camel-test-junit6
  • camel-jaxb ← downstream of org.apache.camel:camel-test-junit6
  • camel-jbang-mcp ← downstream of org.apache.camel:camel-java-joor-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-main
  • 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-spring-xml
  • camel-jmx ← downstream of org.apache.camel:camel-test-junit6
  • 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-test-junit6
  • 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-seda
  • camel-management ← downstream of org.apache.camel:camel-core
  • 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-test-junit6
  • camel-micrometer ← downstream of org.apache.camel:camel-test-junit6
  • camel-micrometer-observability ← downstream of org.apache.camel:camel-test-spring-junit6
  • camel-micrometer-prometheus ← downstream of org.apache.camel:camel-platform-http-main
  • camel-microprofile-config ← downstream of org.apache.camel:camel-test-junit6
  • camel-microprofile-fault-tolerance ← downstream of org.apache.camel:camel-test-spring-junit6
  • 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-main
  • camel-netty-http ← downstream of org.apache.camel:camel-test-spring-junit6
  • 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-opentelemetry2
  • camel-observation ← downstream of org.apache.camel:camel-test-spring-junit6
  • camel-ocsf ← 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-test-spring-junit6
  • camel-openapi-validator ← 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-test-junit6
  • 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-cron
  • 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-test-junit6
  • 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-test-spring-junit6
  • camel-resilience4j-micrometer ← downstream of org.apache.camel:camel-test-spring-junit6
  • 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-servlet
  • 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-seda ← components/camel-seda/src/main/java/org/apache/camel/component/seda/SedaProducer.java
  • 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-test-junit6
  • 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-main
  • 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-test-junit6
  • 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-test-junit6
  • camel-stripe ← downstream of org.apache.camel:camel-test-junit6
  • camel-stub ← downstream of org.apache.camel:camel-seda
  • 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-seda
  • camel-test-junit6 ← downstream of org.apache.camel:camel-seda
  • camel-test-main-junit5 ← downstream of org.apache.camel:camel-main
  • camel-test-main-junit6 ← downstream of org.apache.camel:camel-test-junit6
  • camel-test-spring-junit5 ← downstream of org.apache.camel:camel-test-junit5
  • camel-test-spring-junit6 ← downstream of org.apache.camel:camel-test-junit6
  • camel-thrift ← downstream of org.apache.camel:camel-test-spring-junit6
  • camel-thymeleaf ← downstream of org.apache.camel:camel-test-spring-junit6
  • 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-test-junit6
  • 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-test-spring-junit6
  • 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-seda
  • camel-xml-jaxb-dsl ← downstream of org.apache.camel:camel-seda
  • camel-xml-jaxb-dsl-test-definition ← downstream of org.apache.camel:camel-seda
  • camel-xml-jaxb-dsl-test-spring ← downstream of org.apache.camel:camel-seda
  • 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-stub
  • 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-test-junit6
  • camel-zookeeper-master ← downstream of org.apache.camel:camel-test-junit6
Modules with tests skipped (28)
  • 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

ℹ️ Shadow mode — Scalpel observes but does not affect test execution. Learn more

⚠️ Some tests are disabled on GitHub Actions (@DisabledIfSystemProperty(named = "ci.env.name")) and require manual verification:

  • core/camel-core: 3 test(s) disabled on GitHub Actions
Build reactor — dependencies compiled but only changed modules were tested (3 modules, 6.5s total)

Total reactor time: 6.5s

Module Duration Status
Camel :: Seda 6.5s SUCCESS
Camel :: Core n/a
Camel :: Disruptor n/a

Top 20 slowest modules:

  • Camel :: Seda (6.5s)

⚙️ View full build and test results

@oscerd oscerd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI is green on both build (17) and build (25), matching what I traced earlier: the async InOnly copy detaches the spooled stream cache from the parent unit of work with target.removeProperty(ExchangePropertyKey.STREAM_CACHE_UNIT_OF_WORK), so a stream cached to disk by a Multicast or Split survives until the seda/disruptor consumer route processes it, instead of being closed with the parent exchange (the "Cannot reset stream from file" case). Both SedaProducer and DisruptorProducer carry the identical change, mirroring the Wire Tap EIP fix (CAMEL-12108).

Approving.

This review was generated with AI assistance and reviewed/issued by the human operator. Claude Code on behalf of oscerd

@davsclaus davsclaus added this to the 4.23.0 milestone Sep 28, 2026
@davsclaus davsclaus added the bug Something isn't working label Sep 28, 2026
@davsclaus
davsclaus merged commit ceb06d9 into apache:main Sep 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working components core

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants