Uploaded image for project: 'Commons VFS'
  1. Commons VFS
  2. VFS-698

SFTP file attributes are fetched multiple times leading to very slow directory listing

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.3
    • 2.4
    • None

    Description

      getChildren() applied on SftpFileObject is very slow compared to JSCH implementation. This is because, the SftpATTRS which is readily available for the children after an "ls" call is again fetched for each child file since they are independently resolved. So if a directory contains 10 files, it results in 1 (ls) + 10 (stat) calls to server.

      For a folder with 100 files (AWS), it took about 35 secs instead of 1.5 secs to  getChildren().

       

      doListChildrenResolved:

      final FileObject fo = getFileSystem().resolveFile(getFileSystem().getFileSystemManager()
      {{ .resolveName(getName(), UriParser.encode(name), NameScope.CHILD));}}

      ((SftpFileObject) FileObjectUtils.getAbstractFileObject(fo)).setStat(stat.getAttrs());

       

      The resolveFile call, creates a SftpFileObject and calls its resolve method, which results in getting the (stats) SftpATTRS for each child file. This stat is already available as part of the 'ls' call we made. The setStat call above (highlighted is red) is redundant, since stat for each child file is already fetched one at a time.

      The solution would be to avoid getting the stat for each child file after an 'ls' call. May be, the framework makes it difficult to do this easily.

       

       

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            krishnanmms krishnan
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment