Comments (7)
That’s definitely not ideal. What do you think the right behavior is? I wonder if we should just always ignore the error, of if we should notify the user somehow.
from directory-watcher.
from directory-watcher.
That sounds reasonable. Do you want to send a PR?
from directory-watcher.
from directory-watcher.
Hey
I had a look over the code. So the issue happens at recursiveVisitFiles. That method is being called plenty of times
- Directory created while watching
- Directory watcher init to calculate hashes
- Directory watcher init to register folders
- Some more times inside MacOSXListeningWatchService which didn't check to see exactly what it does
Since the method might be called multiple times from different functions for same paths we need a consistent result. We cant let the consumer decide ( We want to avoid situations in which when calculating hashes the consumer returns SKIP_SIBLINGS and on folder registration the consumer returns TERMINATE )
Based on the above our 3 remaining options are
- TERMINATE (Why shall we terminate visiting? We are directory watcher library. We should keep scanning if possible)
- CONTINUE (SKIP_SUBTREE on visitFileFailed behaves exactly like CONTINUE)
- SKIP_SIBLINGS
Based on this small analysis i think that we should enforce CONTINUE and done with it.
As for notifying the user, since the user has no control over what happens there is no point (Nothing the user can do except logging and for that case we can use the already injected logger)
Looking forward to your comments
from directory-watcher.
I agree CONTINUE is probably the most useful behavior in most cases. It would be useful to at least log a warning there though.
I'm not convinced that a notification mechanism isn't useful though. What if the program using the watcher wants to ask the end user to fix their permissions?
from directory-watcher.
I do agree though that it's kind of a pain to go through and add a callback to every single case where we use the file visitor. Why don't we start with just continue and log, then we can look at incremental improvements from there?
from directory-watcher.
Related Issues (20)
- [JAVA] 0.9.3 Copy & Remove of folder structure does not produce CREATE events HOT 1
- Missing tag `0.9.6` upstream HOT 1
- New Release HOT 4
- Absolute path prevents events on macOS HOT 3
- Question on Using 2 Classes HOT 1
- LibCarbon failure on MacOS Big Sur HOT 12
- Allow watching directory non-recursively HOT 1
- Unable to detect file deletion events HOT 27
- File creation on Windows is sometimes not detected for copied files HOT 3
- Ensure consistent behavior when a root watched directory is deleted
- Define a minimal public API
- Watcher does not detect (re)moving a parent directory HOT 2
- DirectoryWatcher.watch() throws ClosedWatchServiceException when Watcher is closed HOT 4
- Does it work with mounted volumes with Docker? HOT 4
- Missing events when file is created too soon after watcher is initialized HOT 3
- Modification events are lost depending on editor - how the file is written - neovim HOT 7
- Duplicate events when editing file on Samba share HOT 7
- Fails with NoClassDefFoundError inside Wildfly HOT 2
- Suggestion: Fail (or handle!) watched path being a file instead of a directory
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from directory-watcher.