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

Claus Ibsen resolved CAMEL-11454.
---------------------------------
       Resolution: Fixed
    Fix Version/s:     (was: 2.18.5)

Thanks for the PR

> camel-zipfile dataformat cannot remove successfully processed files
> -------------------------------------------------------------------
>
>                 Key: CAMEL-11454
>                 URL: https://issues.apache.org/jira/browse/CAMEL-11454
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-zipfile
>    Affects Versions: 2.18.3
>         Environment: Windows 7 x64
>            Reporter: Adrien PAILHES
>            Assignee: onder sezgin
>            Priority: Minor
>             Fix For: 2.19.2, 2.20.0
>
>
> When creating a route as follows:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:camel="http://camel.apache.org/schema/spring";
>   xmlns:context="http://www.springframework.org/schema/context"; 
> xmlns:util="http://www.springframework.org/schema/util";
>   xsi:schemaLocation="
>           http://www.springframework.org/schema/beans 
> http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
>           http://www.springframework.org/schema/context 
> http://www.springframework.org/schema/context/spring-context-4.2.xsd
>           http://camel.apache.org/schema/spring 
> http://camel.apache.org/schema/spring/camel-spring.xsd
>           http://www.springframework.org/schema/util 
> http://www.springframework.org/schema/util/spring-util-2.5.xsd";>
>   <bean id="zipFileDataFormat" 
> class="org.apache.camel.dataformat.zipfile.ZipFileDataFormat">
>     <property name="usingIterator" value="true" />
>   </bean>
>   <camelContext xmlns="http://camel.apache.org/schema/spring"; 
> streamCache="true">
>     <route>
>       <from uri="file:C:/camelTest/in" />
>       <unmarshal ref="zipFileDataFormat" />
>       <split streaming="true">
>         <simple>${body}</simple>
>         <log loggingLevel="INFO" message="$simple{header.zipFileName}" />
>         <to uri="file:C:/camelTest/xml" />
>       </split>
>       <log loggingLevel="INFO" message="$simple{file:name} Succesful 
> processed" />
>     </route>
>   </camelContext>
> </beans>
> {code}
> the renaming of the file fails with 
> {code}
> Renaming file from 'C:\camelTest\in\20161201T0030Z_1D_BE00_EQ.zip' to 
> 'C:\camelTest\in\.camel\20161201T0030Z_1D_BE00_EQ.zip' failed: Cannot delete 
> file 'C:\camelTest\in\20161201T0030Z_1D_BE00_EQ.zip' after copy succeeded
> {code}
> The file stays in input folder and gets processed over and over again.
> h2. Investigation
> Problem only occurs if:
> * you try to move the file at the end of the exchange (not with noop but with 
> delete, for example)
> * if ZipFile dataformat is used (not with ZipSplitter)
> * if usingIterator is true (not if false and Zip file with 1 entry)
> It's because in org.apache.camel.dataformat.zipfile.ZipIterator constructor:
> {code}
>         InputStream inputStream = inputMessage.getBody(InputStream.class);
> {code}
> will create a new input stream instead of using the one already opened: 
> inputStream parameter when using 
> org.apache.camel.dataformat.zipfile.ZipFileDataFormat#unmarshal.
> This one won't be closed and you won't be able to release the resource unless 
> you kill the process.
> So, two solutions:
> * close the inputStream parameter in 
> org.apache.camel.dataformat.zipfile.ZipFileDataFormat#unmarshal before using 
> ZipIterator constructor
> * use inputStream parameter instead of creating a new one when using 
> dataformat (that's the implementation provided in the pull request)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to