[
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]