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

Thomas Wolf reassigned SSHD-1220:
---------------------------------

    Assignee: Thomas Wolf

> SFTP: too many LSTAT calls
> --------------------------
>
>                 Key: SSHD-1220
>                 URL: https://issues.apache.org/jira/browse/SSHD-1220
>             Project: MINA SSHD
>          Issue Type: Improvement
>    Affects Versions: 2.7.0
>            Reporter: Thomas Wolf
>            Assignee: Thomas Wolf
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> While looking at an alternate solution for SSHD-1217 I noticed that the 
> {{AbstractSftpSubsystemHelper}} makes several LSTAT calls for a single 
> {{FileSystem.readAttributes()}} invocation.
> Basically it makes one LSTAT call per supported attributes view; only to 
> collect the returned items then in one single map anyway.
> This doesn't make any sense. SFTP file attributes are a single, defined 
> structure. If {{AbstractSftpSubsystemHelper.getAttributes()}} needs to 
> collect all these different views ({{BasicFileAttributes}}, 
> {{PosixFileAttributes}}, and so on) on these underlying SFTP attributes, then 
> all these views should build upon the same single {{SftpClient.Attributes}} 
> gotten exactly _once_.
> This could be solved with careful temporary caching of SFTP attributes on the 
> {{SftpPath}} once read while in 
> {{AbstractSftpSubsystemHelper.getAttributes()}} and clearing that cache at 
> the end.
> The problem is more general, though. The code in several places makes 
> up-front checks whether a file exists, is a directory, and so on. This is a 
> questionable pattern anyway, since the result of a {{Files.exists()}} is 
> outdated immediately; one cannot rely on the file being still there on the 
> next access. With an {{SftpPath}}, this {{exists()}} call is an (L)STAT 
> remote call getting the attributes. Now look at 
> {{AbstractSftpSubsystemHelper.resolveFileAttributes}}: here getting the 
> attributes themselves is so guarded, so it makes at least _two_ LSTAT calls.
> This should also be improved.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to