[jboss-jira] [JBoss JIRA] (JBVFS-166) Deployment archives that are symlinks do not get cached properly when jboss.vfs.forceCanonical is set to 'true'

Ales Justin (JIRA) jira-events at lists.jboss.org
Mon May 7 09:30:20 EDT 2012


    [ https://issues.jboss.org/browse/JBVFS-166?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12690745#comment-12690745 ] 

Ales Justin commented on JBVFS-166:
-----------------------------------

@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

        


More information about the jboss-jira mailing list