[
https://issues.jboss.org/browse/JBVFS-166?page=com.atlassian.jira.plugin....
]
Ales Justin edited comment on JBVFS-166 at 5/7/12 9:30 AM:
-----------------------------------------------------------
@Chris: how exactly do you reproduce this?
This is my test atm:
public void testAppAsLink() throws Exception
{
if (supportSymlinks() == false)
return;
URL dir = getResource("/vfs/symlink");
CombinedVFSCache cache = new CombinedVFSCache();
VFSCacheFactory.setInstance(cache);
cache.setPermanentRoots(Collections.<URL, ExceptionHandler>singletonMap(dir,
null));
VirtualFile root = VFS.getRoot(dir);
VirtualFile app = root.getChild("app.jar");
VirtualFile clazz =
app.getChild("org/jboss/test/vfs/support/CommonClass.class");
Assert.assertNotNull(clazz);
URL url = clazz.toURL();
VirtualFile vf1 = VFS.getRoot(url);
Assert.assertNotNull(vf1);
VirtualFile vf2 = VFS.getRoot(url);
Assert.assertNotNull(vf2);
}
Skywalker:symlink alesj$ ls -la
total 8
drwxr-xr-x 3 alesj staff 102 May 7 15:16 .
drwxr-xr-x 7 alesj staff 238 May 7 14:41 ..
lrwxr-xr-x 1 alesj staff 17 May 7 15:16 app.jar -> ../test/outer.jar
was (Author: alesj):
@Chris: how exactly do you reproduce this?
This is my test atm:
public void testAppAsLink() throws Exception
{
if (supportSymlinks() == false)
return;
URL dir = getResource("/vfs/symlink");
CombinedVFSCache cache = new CombinedVFSCache();
VFSCacheFactory.setInstance(cache);
cache.setPermanentRoots(Collections.<URL, ExceptionHandler>singletonMap(dir,
null));
VirtualFile root = VFS.getRoot(dir);
VirtualFile app = root.getChild("app.jar");
VirtualFile clazz =
app.getChild("org/jboss/test/vfs/support/CommonClass.class");
Assert.assertNotNull(clazz);
URL url = clazz.toURL();
VirtualFile vf1 = VFS.getRoot(url);
Assert.assertNotNull(vf1);
VirtualFile vf2 = VFS.getRoot(url);
Assert.assertNotNull(vf2);
}
Skywalker:symlink alesj$ ls -la
total 8
drwxr-xr-x 3 alesj staff 102 May 7 15:16 .
drwxr-xr-x 7 alesj staff 238 May 7 14:41 ..
lrwxr-xr-x 1 alesj staff 17 May 7 15:16 app.jar -> ../test/outer.jar
Deployment archives that are symlinks do not get cached properly when
jboss.vfs.forceCanonical is set to 'true'
---------------------------------------------------------------------------------------------------------------
Key: JBVFS-166
URL:
https://issues.jboss.org/browse/JBVFS-166
Project: JBoss VFS
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 2.2.0.GA
Reporter: Mike Clark
Assignee: Ales Justin
When a deployment, such as an .ear file, is a symlink and the jboss.vfs.forceCanonical
property is set to "true" to address JBVFS-137, the deployment fails to be
properly cached leading to an ever increasing vfs-nested.tmp directory.
JBVFS-137 addresses the problem that permanentRoots in the VFSCache get set according to
their canonical path by the URL PropertyEditor. Without the fix, if the deployment
directory is a symlink, it will be stored in the cache using a different path than lookups
will use. To correct this, when checking for items in the cache, the canonical path must
be used, or else there will not be a match. Setting the jboss.vfs.forceCanonical property
enables conversion of the deployment's path to a canonical path for this purpose.
However, in the case of a deployment that is a symbolic link within the deploy directory
(i.e., someApp.ear is itself a symbolic link), there is no initial modification of the
path to a canonical path. (Because the URL is not being set via a PropertyEditor.) So, it
is stored based on the non-canonical path. But, with jboss.vfs.forceCanonical set to
true, the lookup is based on the canonical path, which doesn't match.
--
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