boot-clj / boot-clj/boot

AccessDeniedException kills the filesystem watcher

Open
#546 1 comment 0 reactions 0 assignees View on GitHub
Bug pr-most-welcome
Dominant language
Clojure
Stars
1.7k
Forks
178
PR merge metrics
No merged PRs in 30d

Description

The filesystem watcher should never die. In 2.7.0 issue #477 has been fixed.
When creating a file with mode 000, the filesystem watcher dies (i.e. touch foo.clj; chmod 000 foo.clj)
```
dev=> Uncaught exception in thread Thread-15:
java.lang.Thread.run Thread.java: 745
...
boot.core/watch-dirs/fn core.clj: 751
boot.core/set-user-dirs!/on-change core.clj: 194
boot.core/sync-user-dirs! core.clj: 139
...
boot.core/patch! core.clj: 725
...
boot.filesystem/patch! filesystem.clj: 200
...
boot.filesystem/copy! filesystem.clj: 163
java.nio.file.Files.copy Files.java: 1274
sun.nio.fs.UnixFileSystemProvider.copy UnixFileSystemProvider.java: 253
sun.nio.fs.UnixCopyFile.copy UnixCopyFile.java: 581
sun.nio.fs.UnixCopyFile.copyFile UnixCopyFile.java: 230
sun.nio.fs.UnixException.rethrowAsIOException UnixException.java: 107
sun.nio.fs.UnixException.rethrowAsIOException UnixException.java: 102
sun.nio.fs.UnixException.translateToIOException UnixException.java: 84
java.nio.file.AccessDeniedException: resources/foo2
file: "resources/foo2"
```

It's easy to fix that case like the fix for #477, but I think it would also make sense to catch exceptions in the outer filesystem watcher loop in order to make it a bit more robust.

(in my case some emacs backup/lock files kill the watcher)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.