Sam Halliday created VFS-553:
--------------------------------

             Summary: DefaultFileMonitor with workaround.setRecursive(false) is 
complaining about descendent files
                 Key: VFS-553
                 URL: https://issues.apache.org/jira/browse/VFS-553
             Project: Commons VFS
          Issue Type: Bug
    Affects Versions: 2.0
            Reporter: Sam Halliday


DefaultFileMonitor with workaround.setRecursive(false) is complaining about 
descendent files... which it shouldn't care about.


When attempting to implement a workaround for VFS-536

  https://github.com/ensime/ensime-server/issues/613

we added a second non-recursive file watcher on all the ancestor directories of 
the recursively watched directory (to detect if it is deleted).

https://github.com/ensime/ensime-server/blob/master/src/main/scala/org/ensime/indexer/FileWatchers.scala#L58

To give some context: ENSIME is an IDE backend for Scala developers in Emacs. 
We watch the source and classfile directories for changes (by the user and 
build tool, but the build tool can delete the target directories).

Users can have **massive** directories in their projects (I have a project with 
a 60GB directory full of millions of files), but we only want to watch the 
source/classfile directories.

However, even though this second (non-recursive) directory is supposed to be 
non-recursive, it is spitting out errors that only make sense if it is 
traversing the entire recursive tree:

e.g. 

project/
    bigdir/Foo:Bar
    target/classes


project/target/classes is watched recursively
project/target is watched non-recursively
project is watched non-recursively

but "Foo:Bar" is spitting out these sorts of errors.

To fully appreciate the impact, bare in mind that "project/bigdir" is 
absolutely enormous and contains millions of files/dirs.


[info] 09:48:46.939 [Thread-4] ERROR o.a.c.vfs2.impl.DefaultFileMonitor - 
Invalid descendent file name "Foo:Bar".
[info] org.apache.commons.vfs2.FileSystemException: Invalid descendent file 
name "Foo:Bar".
[info]  at 
org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveName(DefaultFileSystemManager.java:791)
 ~[commons-vfs2-2.0.jar:2.0]
[info]  at 
org.apache.commons.vfs2.provider.AbstractFileObject.getChildren(AbstractFileObject.java:710)
 ~[commons-vfs2-2.0.jar:2.0]
[info]  at 
org.apache.commons.vfs2.impl.DefaultFileMonitor$FileMonitorAgent.checkForNewChildren(DefaultFileMonitor.java:565)
 [commons-vfs2-2.0.jar:2.0]
[info]  at 
org.apache.commons.vfs2.impl.DefaultFileMonitor$FileMonitorAgent.check(DefaultFileMonitor.java:679)
 [commons-vfs2-2.0.jar:2.0]
[info]  at 
org.apache.commons.vfs2.impl.DefaultFileMonitor$FileMonitorAgent.access$200(DefaultFileMonitor.java:430)
 [commons-vfs2-2.0.jar:2.0]
[info]  at 
org.apache.commons.vfs2.impl.DefaultFileMonitor.run(DefaultFileMonitor.java:385)
 [commons-vfs2-2.0.jar:2.0]
[info]  at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to