You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/10/20 07:40:00 UTC

[jira] [Updated] (CAMEL-25860) camel-core - pollEnrich: after a timeout, a message that creates its body on demand (such as of a file consumer) brings its body back instead of null

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

Claus Ibsen updated CAMEL-25860:
--------------------------------
    Fix Version/s: 4.22.3
                   4.18.6

> camel-core - pollEnrich: after a timeout, a message that creates its body on demand (such as of a file consumer) brings its body back instead of null
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25860
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25860
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.18.6, 4.22.3, 4.24.0
>
>
> When a pollEnrich (or poll) times out, the default aggregation sets the body to null ({{PollEnricher.CopyAggregationStrategy}}), and with {{variableReceive}} the variable gets that null body. In a route whose message creates its body on demand, the null does not stick: {{MessageSupport.getBody()}} calls {{createBody()}} for a null body, so the next read brings the original body back.
> The message of a file consumer ({{GenericFileMessage}}) creates its body from its file, so after the timeout the body, or the variable of variableReceive, is the file of the exchange instead of null:
> {noformat}
> from: file:orders
>   pollEnrich: file:customers?fileName=${header.customer}.json, timeout 1000
>   -> body (or ${variable.customer}) is .../orders/order-1001.json when there is no customer file
> {noformat}
> The messages of other consumers create their body on demand as well: JMS, sjms, mail, HTTP ({{HttpMessage}}), XMPP, SMPP, SNMP and Spring WS. For them, the body is the payload of the consumer again.
> Found in a benchmark of Oct 19-20 2026 (an enrich example with a pollEnrich of a customer file): 5 of 12 runs got "Key: name not found in bean: .../orders/order-1001.json of type: java.io.File" from {{${variable.customer[name]}}}, and the model then looked for the cause elsewhere.
> Proposal: when the message brings a body back after setBody(null), the aggregation uses a plain message with the same headers and attachments, so the body stays null.
> _Claude Code on behalf of davsclaus_



--
This message was sent by Atlassian Jira
(v8.20.10#820010)