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

Claus Ibsen resolved CAMEL-12472.
---------------------------------
    Resolution: Fixed

> Downloading a large file with streamDownload and stepwise hangs 
> ----------------------------------------------------------------
>
>                 Key: CAMEL-12472
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12472
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-ftp
>    Affects Versions: 2.21.0
>         Environment: * Camel versions: 2.17.0 and 2.21.0
>  * Ftp servers: plain vsftpd server, org.apache.ftpserver as a mock, Camel 
> test environment ftp.
>  * Files: depending on configuration from 1mb to 5mb file is vital for error 
> to happen. 
>            Reporter: Karol Koltun
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 3.10.0
>
>         Attachments: 0001-FtpSimpleConsumeStreamingStepwiseTest.patch
>
>
> *Downloading a file exceeding certain, system-dependent size with 
> streamDownload and stepwise options turned on hangs and causes timeout.*
> I prepared a test which triggers the error. The patch file is pretty big, as 
> I had to make a file enough big to make the timeout happen. Basing on my 
> predictions, the size of the file triggering the error depends on FTP 
> configuration and Java caching policy (no proof available yet). Working with 
> plain Vsftpd server even 1mb files triggered timeouts. In the test 
> environment the limit on my desktop is 5 mb. If the test passes, please make 
> the file bigger.
> My intepretation of the problem:
>  # Start downloading a file with size exceeding InputStream cache (on my pc 
> approx. 1mb is the limit).
>  
> [FtpOperations.java:373|https://github.com/apache/camel/blob/dc6caa696255240a2a27c3bf229fc3aac9014401/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java#L423]
> {code:java}
> InputStream is = this.client.retrieveFileStream(remoteName);
> {code}
>  #  The server responds 150 and opens data connection.
> {code:java}
> [user_ftp] FTP response: Client "127.0.0.1", "150 Opening BINARY mode data 
> connection for x (1048576 bytes)."
> {code}
>  # The data connection does not end because InputStream is waiting for reads 
> and it has not cached whole file. No "226 Transfer complete" response from 
> server.
>  # Try to change directory as stepwise is turned on.
>  
> [FtpOperations.java:387|https://github.com/apache/camel/blob/dc6caa696255240a2a27c3bf229fc3aac9014401/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java#L443]
> {code:java}
> this.changeCurrentDirectory(currentDir);
> {code}
>  # Camel hangs as the server is still in the data connection and we are 
> waiting for response from CWD command.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to