[ https://issues.apache.org/jira/browse/CAMEL-4356?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13091762#comment-13091762 ]
Claus Ibsen commented on CAMEL-4356: ------------------------------------ Some FTP server may not allow listing using a name parameter. I think in the past there has been some issue about that. So please check the mailing list for past talks about this. If there is something about this, we may need to add an option so people can turn this on|off according to whatever works. > faster way of testing for file existence > ---------------------------------------- > > Key: CAMEL-4356 > URL: https://issues.apache.org/jira/browse/CAMEL-4356 > Project: Camel > Issue Type: Improvement > Components: camel-ftp > Affects Versions: 2.8.0 > Reporter: Marco Crivellaro > Assignee: Willem Jiang > Priority: Minor > > when storing a file the ftp component checks if the file exists in the > endpoint, this is done by listing the content of the destination folder and > looping through all files listed. > the list operation takes a long time when the destination folder contains > hundreds of files. > instead of listing for all files the component can simply list for the file > it is interested on, this way the number of files contained in destination > folder won't affect the time it takes the producer to process the exchange. > I currently have a case where delivering to an endpoint is taking more than a > minute because of this issue. > Both ftp and sftp libraries used supports listing for a single file so the > changes would be the following: > {code:title=FtpOperations.java} > public boolean existsFile(String name) throws > GenericFileOperationFailedException { > String[] names = client.listNames(name); > if (names == null) { > return false; > } > return (names.lenght >= 1); > } > {code} > {code:title=SftpOperations.java} > public boolean existsFile(String name) throws > GenericFileOperationFailedException { > Vector files = channel.ls(name); > if (names == null) { > return false; > } > return (names.size >= 1); > } > {code} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira