VFS context lookups fail because of drive letter case sensitivity on Windows
----------------------------------------------------------------------------
Key: JBVFS-181
URL:
https://issues.jboss.org/browse/JBVFS-181
Project: JBoss VFS
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: 2.1.4.GA
Environment: Windows, JBoss 5.1.0 GA patched with VFS 2.1.4 GA
Reporter: Michael Keefe
Assignee: John Bailey
We currently run JBoss on both Windows and Linux platforms. On Windows we started to see
the notorious explosion of nested resources in the vfs-nested.tmp folder. After stepping
through the VFS code, I discovered code like the following in several places (this example
from IterableVFSCache):
String uriString = VFSUtils.stripProtocol(uri);
Iterable<String> keys = getKeys();
readLock();
try
{
for (String key : keys)
{
if (uriString.startsWith(key))
return getContext(key);
}
}
...
The simple "startsWith" check ignores the case of a drive letter in Windows
which makes context lookups fail. For example, a uriString like "d:/myPath"
will result in a failed context lookup if the associated key is "D:/myPath". A
solution may be to simply "canonicalize" drive letters in Windows file URLs so
that they are always upper cased when performing a context lookup.
For now, we have converted all our drive letter references to upper case, but this is a
fragile solution. VFS should be able to handle this correctly. It would be great if a
patch could be made for this particular issue.
Thanks.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira