Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-4356

faster way of testing for file existence

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 2.8.0
    • Fix Version/s: 2.8.2, 2.9.0
    • Component/s: camel-ftp
    • Labels:
      None
    • Estimated Complexity:
      Unknown

      Description

      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:

      FtpOperations.java
      public boolean existsFile(String name) throws GenericFileOperationFailedException { 
        String[] names = client.listNames(name); 
        if (names == null) { 
          return false; 
        } 
        return (names.lenght >= 1); 
      } 
      
      SftpOperations.java
      public boolean existsFile(String name) throws GenericFileOperationFailedException { 
        Vector files = channel.ls(name); 
        if (names == null) { 
          return false; 
        } 
        return (names.size >= 1); 
      }
      

        Attachments

          Activity

            People

            • Assignee:
              njiang Willem Jiang
              Reporter:
              crive Marco Crivellaro
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: