Karol Koltun created CAMEL-12472:
------------------------------------

             Summary: Downloading a large file with streamDownload and stepwise 
timeOut 
                 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: Tested on:
 * 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
         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
(v7.6.3#76005)

Reply via email to