[
https://issues.apache.org/jira/browse/CAMEL-16197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17317977#comment-17317977
]
Manuel Shenavai commented on CAMEL-16197:
-----------------------------------------
I just tested the fixes. For my provided use-case they fix the problem. In
addition to that, I checked the behavior if the attachments are removed from
the camelExchange (without reading the data, just cleaning the attachment
list). For use-case 1 (inbound, one-way) the attachments are still removed.
Because the cleanup is working on the cxf exchange. For the second use-case,
the file leak persist, because the cleanup works on the camelExchange.
Therefore I did another change and move the cleanup to the cxfBinding. I
created a pull request for that:
[https://github.com/apache/camel/pull/5326]
With this change, the file leak is fixes, even if the attachments are removed
from the camel exchange.
> CXF Attachment stay in file system after processing if file attachments has
> not been used
> -----------------------------------------------------------------------------------------
>
> Key: CAMEL-16197
> URL: https://issues.apache.org/jira/browse/CAMEL-16197
> Project: Camel
> Issue Type: Bug
> Components: camel-cxf
> Affects Versions: 2.25.3
> Reporter: Manuel Shenavai
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 3.10.0
>
> Attachments: attachment2.zip, attachments.3.7.zip, attachments.zip
>
>
> Hi everyone,
>
> we are using the camel CXF component and found that the cleanup of cached
> attachments is not working as expected. CXF will persist attachments to disk
> whenever they exceed a certain limit in size: [cxf
> source|https://github.com/apache/cxf/blob/3.2.x-fixes/core/src/main/java/org/apache/cxf/io/CachedOutputStream.java#L433]
> If the attachments are consumed within the route, i.e. when they are used to
> send a message, the files will be removed from the filesystem. In case they
> are not used at all, the files will stay in the filesystem. So the CXF
> component somehow assumes that the attachments are consumed within the route.
>
> Example
> We send a message that contains a attachment to a CXF endpoint. The
> attachment-size exceeds the size threshold and therefore will be persisted to
> disk. During message processing the attachment will not be used (the endpoint
> is oneway and attachments are not used within the route). After message
> processing, the file stays in the filesystem.
>
> Reproduce with attached example project:
> # Start the Server.java test (starts the server taking the requests)
> # Start the Client.java (sends a request to the server)
> # Check the temp folder (printed in console by Client.java, in my case
> “C:\Users\me\AppData\Local\Temp\cxf-tmp-3330821712753099698)
> # Repeat executing Client.java and find for each run a new tmp-file
>
> Due to this file leaks, the filesystem will be filled up over time.
> Best regards,
> Manuel
--
This message was sent by Atlassian Jira
(v8.3.4#803005)