]>
go.fuhry.dev Git - fsnotify.git/log
Nahum Shalman [Tue, 17 Aug 2021 14:33:47 +0000 (10:33 -0400)]
Update test matrix for go 1.17 stable release (#385)
Ichinose Shogo [Wed, 4 Aug 2021 20:19:43 +0000 (05:19 +0900)]
add //go:build lines + add 1.17.0-rc2 to test matrix (#377)
Nahum Shalman [Wed, 4 Aug 2021 19:53:11 +0000 (15:53 -0400)]
Update x/sys to latest (#379)
Nahum Shalman [Wed, 4 Aug 2021 19:46:51 +0000 (15:46 -0400)]
Drop support/testing for Go 1.11 and earlier (#381)
Oliver Bristow [Sun, 1 Aug 2021 10:11:11 +0000 (11:11 +0100)]
Remove Travis CI and references
Oliver Bristow [Sun, 1 Aug 2021 09:19:38 +0000 (10:19 +0100)]
Add lint+vet+old versions to GitHub Action
Ichinose Shogo [Sat, 31 Jul 2021 07:13:10 +0000 (16:13 +0900)]
introduce GitHub Actions
Tobias Klauser [Fri, 17 Apr 2020 21:56:12 +0000 (23:56 +0200)]
Fix unsafe pointer conversion (#325)
Fix the following unsafe pointer conversion found using the Go 1.14
-d=checkptr gcflags (`go1.14rc1 test -gcflags=all=-d=checkptr -v ./...`)
```
fatal error: checkptr: unsafe pointer conversion
goroutine 68 [running]:
runtime.throw(0x5833e9, 0x23)
runtime/panic.go:1112 +0x72 fp=0xc00030fba8 sp=0xc00030fb78 pc=0x432a32
runtime.checkptrAlignment(0xc00031f018, 0x544800, 0x1)
runtime/checkptr.go:18 +0xb7 fp=0xc00030fbd8 sp=0xc00030fba8 pc=0x4063a7
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc0002900f0)
github.com/fsnotify/fsnotify/inotify.go:275 +0x457 fp=0xc00031ffd8 sp=0xc00030fbd8 pc=0x519037
runtime.goexit()
runtime/asm_amd64.s:1375 +0x1 fp=0xc00031ffe0 sp=0xc00031ffd8 pc=0x463eb1
created by github.com/fsnotify/fsnotify.NewWatcher
github.com/fsnotify/fsnotify/inotify.go:59 +0x1a5
```
Fixes #330
Nathan Youngman [Wed, 11 Mar 2020 16:36:45 +0000 (10:36 -0600)]
Move example usage to the readme
may resolve #328
Pratik Shinde [Mon, 7 Oct 2019 09:55:39 +0000 (15:25 +0530)]
Updating the FAQ section for supportability with NFS & FUSE filesystems.
closes #312 #306
Nathan Youngman [Sat, 5 Oct 2019 23:39:47 +0000 (17:39 -0600)]
drop 1.8.x from Travis CI
see #310
Nathan Youngman [Sat, 5 Oct 2019 23:12:31 +0000 (17:12 -0600)]
2019
Nathan Youngman [Sat, 5 Oct 2019 23:12:25 +0000 (17:12 -0600)]
revise editor config
tabs only for Go
Nathan Youngman [Sat, 5 Oct 2019 23:12:12 +0000 (17:12 -0600)]
Add Go modules
Nathan Youngman [Sat, 5 Oct 2019 22:41:51 +0000 (16:41 -0600)]
readme: plan to support fanotify
Eric Lin [Thu, 25 Oct 2018 04:24:55 +0000 (12:24 +0800)]
Open files with CLOEXEC
Fix #272
Johannes Ebke [Tue, 12 Mar 2019 18:14:46 +0000 (19:14 +0100)]
Also create epoll and pipe fds with close-on-exec (#155) (#219)
* Add the unix.O_CLOEXEC to the Pipe2 call
* Add unix.EPOLL_CLOEXEC to the Epoll call
Nathan Youngman [Fri, 8 Mar 2019 17:06:45 +0000 (10:06 -0700)]
readme: remove AppVeyor badge
Use Travis CI for Windows #284
Brian Goff [Fri, 8 Mar 2019 06:23:41 +0000 (22:23 -0800)]
Add windows to travis matrix
Brian Goff [Fri, 8 Mar 2019 03:54:56 +0000 (19:54 -0800)]
Fix lint issue with error doc string
Brian Goff [Mon, 4 Mar 2019 19:11:11 +0000 (11:11 -0800)]
only run golint on latest version of go
Alexey Kazakov [Thu, 30 Aug 2018 22:02:26 +0000 (15:02 -0700)]
Check if channels are closed in the example (#244)
* Check if channels are closed in the example
* Check if the channels are closed before printing
Nathan Youngman [Thu, 30 Aug 2018 20:16:33 +0000 (14:16 -0600)]
darwin tests: Exchangedata is deprecated on 10.13
#264
Nathan Youngman [Thu, 30 Aug 2018 20:13:18 +0000 (14:13 -0600)]
travis: less verbose tests
TravisCI: skip tip
Gautam Dey [Thu, 30 Aug 2018 20:59:23 +0000 (14:59 -0600)]
[#234] t.Fatalf -> t.Errorf in go routines (#266)
The documentation for t.FailNow (which is called by t.Fatalf) states
that it should not be called in go routines outside of the test go
routine.
Matthias Stone [Thu, 30 Aug 2018 20:03:37 +0000 (14:03 -0600)]
Fix TestInotifyOverflow (#265)
* Queued inotify events could have been read by the test before max_queued_events was hit
Nathan Youngman [Thu, 30 Aug 2018 15:48:21 +0000 (09:48 -0600)]
TravisCI: updating test versions
Nathan Youngman [Wed, 10 Jan 2018 05:33:47 +0000 (22:33 -0700)]
v1.4.7
closes #222
[ci skip]
Nathan Youngman [Wed, 10 Jan 2018 04:31:13 +0000 (21:31 -0700)]
travis: test on Go 1.9.x
Rodrigo Chiossi [Wed, 10 Jan 2018 04:20:58 +0000 (02:20 -0200)]
Fix missing verb on format string (#228)
Anmol Sethi [Wed, 10 Jan 2018 04:19:26 +0000 (23:19 -0500)]
Fix possible deadlock on closing the watcher on kqueue (#230)
* avoid deadlocks on Close()
raw channel work (not inside a select) should
always be prohibited in production code, as
it readily causes deadlocks on shutdown.
Also adds the test TestWatcherClose from #145.
This request duplicates that test, with two
lines fixed to address the houndcli-bot review
concerns.
Fixes #187
Fixes #145
* cleanup and simpler test
* also fix #225
* fix tests
Aaron L [Wed, 29 Mar 2017 04:21:07 +0000 (21:21 -0700)]
Fix deadlock in Remove (linux/inotify)
Several people have reported this issue where if you are using a
single goroutine to watch for fs events and you call Remove in
that goroutine it can deadlock. The cause for this is that the Remove
was made synchronous by PR #73. The reason for this was to try and
ensure that maps were no longer leaking.
In this PR: IN_IGNORE was used as the event to ensure map cleanup.
This worked fine when Remove() was called and the next event was
IN_IGNORE, but when a different event was received the main goroutine
that's supposed to be reading from the Events channel would be stuck
waiting for the sync.Cond, which would never be hit because the select
would then block waiting for someone to receive the non-IN_IGNORE event
from the channel so it could proceed to process the IN_IGNORE event that
was waiting in the queue. Deadlock :)
Removing the synchronization then created two nasty races where Remove
followed by Remove would error unnecessarily, and one where Remove
followed by an Add could result in the maps being cleaned up AFTER the
Add call which means the inotify watch is active, but our maps don't
have the values anymore. It then becomes impossible to delete the
watches via the fsnotify code since it checks it's local data before
calling InotifyRemove.
This code attempts to use IN_DELETE_SELF as a means to know when a watch
was deleted as part of an unlink(). That means that we didn't delete the
watch via the fsnotify lib and we should clean up our maps since that
watch no longer exists. This allows us to clean up the maps immediately
when calling Remove since we no longer try to synchronize cleanup
using IN_IGNORE as the sync point.
- Fix #195
- Fix #123
- Fix #115
Tom Payne [Tue, 21 Mar 2017 12:55:22 +0000 (13:55 +0100)]
Watch.Add improvements (avoid race, fix consistency, reduce garbage) (#189)
* hold mutex for longer to avoid race condition
If Watcher.Add is called with the same name from multiple goroutines and
name is not already in the watches map then the last call to complete
wins and the watch created by the first call to complete is lost.
This commit holds the mutex for the full duration of the update to the
watches map.
* avoid clobbering existing flags if inotify_add_watch fails
Previously, the watch entry is the watches map was updated before the
call to InotifyAddWatch. If InotifyAddWatch fails then this left the
watch entry in an inconsistent state.
* reuse existing watch entry when possible
Nathan Youngman [Tue, 16 Aug 2016 05:19:40 +0000 (23:19 -0600)]
travis: update for Go 1.8
two most recent stable versions + tip
Vahe Khachikyan [Wed, 2 Nov 2016 19:13:10 +0000 (15:13 -0400)]
Moved FAQ into the README
closes #186
ref #129
[ci skip]
Nickolai Zeldovich [Wed, 26 Oct 2016 20:31:22 +0000 (16:31 -0400)]
Properly handle inotify's IN_Q_OVERFLOW event (#149)
* Properly handle inotify's IN_Q_OVERFLOW event
Upon receiving an event with IN_Q_OVERFLOW set in the mask, generate an
error on the Errors chan, so that the application can take appropriate
action.
* Use a well-defined error (ErrEventOverflow) for inotify overflow
* Add a test for inotify queue overflow
Nathan Youngman [Thu, 13 Oct 2016 01:22:19 +0000 (19:22 -0600)]
replace references to OS X with macOS
[ci skip]
Nathan Youngman [Tue, 11 Oct 2016 02:33:12 +0000 (20:33 -0600)]
v1.4.2
Nathan Youngman [Tue, 11 Oct 2016 02:25:47 +0000 (20:25 -0600)]
pull request and issue template (#179)
* editor config sets 4 spaces per tab
via https://github.com/isaacs/github/issues/170#issuecomment-
181814560
[ci skip]
* pull request and issue templates
https://help.github.com/articles/helping-people-contribute-to-your-project/
[ci skip]
* issue template: provide commands to get OS version
suggested by @mdlayher
[ci skip]
Patrick [Tue, 11 Oct 2016 02:24:00 +0000 (19:24 -0700)]
Create inotify fd with close-on-exec (#178)
* Create inotify fd with close-on-exec
* switch to unix.IN_CLOEXEC
Nathan Youngman [Wed, 5 Oct 2016 04:06:20 +0000 (22:06 -0600)]
v1.4.1
Patrick [Wed, 5 Oct 2016 03:39:39 +0000 (20:39 -0700)]
deflake inotify stress test (#177)
* deflake inotify stress test
* tab -> space
* add sleep between creation / deletion to ensure creation events are triggered.
Patrick [Wed, 5 Oct 2016 02:09:41 +0000 (19:09 -0700)]
rm go1.5.4 from travis config since the linter doesn't build in 1.5 (#175)
Nathan Youngman [Sun, 2 Oct 2016 05:17:20 +0000 (23:17 -0600)]
readme: remove gocover.io badge
[ci skip]
Nathan Youngman [Sun, 2 Oct 2016 05:09:12 +0000 (23:09 -0600)]
update link to contributing to external git repos
[ci skip]
Nathan Youngman [Sun, 2 Oct 2016 04:59:51 +0000 (22:59 -0600)]
v1.4.0
Nathan Youngman [Sun, 2 Oct 2016 04:55:20 +0000 (22:55 -0600)]
add @oozie to AUTHORS
[ci skip]
Slawek Ligus [Sun, 2 Oct 2016 02:20:31 +0000 (19:20 -0700)]
Add a String() func to Event.Op (#165)
* Add a String() method to Event.Op
closes #84
* Covering all 5 Op types by the test
Bjørn Erik Pedersen [Tue, 16 Aug 2016 05:15:41 +0000 (07:15 +0200)]
Bump Travis to Go 1.6.3 (#156)
Nathan Youngman [Wed, 29 Jun 2016 01:11:04 +0000 (19:11 -0600)]
v1.3.1
Bruno Bigras [Tue, 28 Jun 2016 16:53:20 +0000 (12:53 -0400)]
Use filepath.Join() (#153)
fix #151
Riku Voipio [Tue, 12 Apr 2016 13:37:56 +0000 (16:37 +0300)]
global: switch to x/sys/unix
The syscall package is locked since 1.4[1], all new changes are in x/sys[2]
The fixes for epoll/arm64 are going to be loaded to x/sys/unix. This
commit is straightforward search/replace with a couple of hand edits.
This is needed for fixing #130
[1] https://golang.org/s/go1.4-syscall
[2] https://godoc.org/golang.org/x/sys/unix
closes #135
Bjørn Erik Pedersen [Wed, 13 Apr 2016 22:32:47 +0000 (00:32 +0200)]
Update Travis config to Go 1.5.4 and 1.6.1
Amit Krishnan [Thu, 10 Mar 2016 01:19:56 +0000 (17:19 -0800)]
Get fsnotify to build clean on Solaris
Signed-off-by: Amit Krishnan <krish.amit@gmail.com>
closes #128
Bjørn Erik Pedersen [Fri, 4 Mar 2016 17:03:19 +0000 (18:03 +0100)]
Add more Go versions to Travis config
Bjørn Erik Pedersen [Fri, 4 Mar 2016 16:57:45 +0000 (17:57 +0100)]
Append missing email address in AUTHORS
Nathan Youngman [Thu, 3 Mar 2016 04:06:04 +0000 (21:06 -0700)]
add Bjørn to authors
Nathan Youngman [Thu, 3 Mar 2016 03:54:07 +0000 (20:54 -0700)]
update authors
Nathan Youngman [Thu, 3 Mar 2016 03:51:59 +0000 (20:51 -0700)]
fix spelling error
thanks to Go Report Card
https://goreportcard.com/report/github.com/fsnotify/fsnotify
Tiffany Jernigan [Tue, 23 Feb 2016 07:14:36 +0000 (23:14 -0800)]
Fix golint errors in windows.go for #116
closes #121
fixes #116
Nathan Youngman [Thu, 18 Feb 2016 16:53:03 +0000 (09:53 -0700)]
rename organization to fsnotify
ref #108
Bjørn Erik Pedersen [Sun, 10 Jan 2016 15:04:37 +0000 (16:04 +0100)]
kqueue: fix Remove-logic
`os.Lstat` does not return `error` when a file/directory exists,
so the code path to check for newly created files after a REMOVE
on BSD was never executed.
Also, if the watched entry is a file, it has been removed from the watcher, so do a new-file-check for them as well.
This commit fixes issues on TextMate on OS X and others that uses `exchangedata` to do atomic saves.
See #17. closes #111.
Nathan Youngman [Thu, 17 Dec 2015 18:48:24 +0000 (11:48 -0700)]
v1.2.8
Nathan Youngman [Thu, 17 Dec 2015 03:04:41 +0000 (20:04 -0700)]
Add race detection on Travis CI.
thanks to @ppknap for the suggestion
Pawel Knap [Wed, 25 Nov 2015 23:22:45 +0000 (00:22 +0100)]
kqueue: fix race condition in Close
fixes #99
closes #105
thanks to @djui for reporting the issue and @ppknap for writing a test.
Add test for concurrent file removes and watcher.Close calls
Nathan Youngman [Thu, 17 Dec 2015 04:41:17 +0000 (21:41 -0700)]
inotify: fix race in test
Daniel Wagner-Hall [Tue, 17 Nov 2015 06:24:26 +0000 (01:24 -0500)]
kqueue: avoid infinite loops from symlinks cycles
The semenatics of using kqueue are already slightly different than
inotify, specifically that inotify will give you events for the symlink
itself whereas kqueue will only give events for the target of the
symlink. This preserves that behaviour, that symlinks don't get notified
on, but ensures that circular symlinks don't recurse forever.
This change pushes the resolved filename up through the stack so that
the fileExists map can be properly populated; not doing so would mean
that deleting a cyclical symlink and then replacing it with a file of
the same name would not notify for that file's creation (or subsequent
events) because we would believe that the file already existed.
Nathan Youngman [Tue, 17 Nov 2015 21:21:40 +0000 (14:21 -0700)]
v1.2.4
铁哥 [Tue, 30 Jun 2015 06:22:22 +0000 (14:22 +0800)]
kqueue: watch for rename events on subdirectories
if flags has no syscall.NOTE_RENAME, subdir rename event will not notify.
closes #83
Ken-ichirou MATSUZAWA [Thu, 12 Mar 2015 05:09:56 +0000 (14:09 +0900)]
inotify: sync Watcher with underlying inotify with IN_IGNORE
Watcher.watches and paths are not deleted when entry was removed automatically. Deleting those entry at ignoreLinux() to fix it.
This changes removing invalid watch name, it (should) always return "can't remove non-existent..."
closes #73
Riku Voipio [Mon, 2 Nov 2015 19:39:13 +0000 (21:39 +0200)]
inotify: switch to epoll_create1
Epoll_create was replaced with epoll_create1 in linux 2.6.27. The older
syscall isn't available on new architectures (such as arm64).
closes #100
Nathan Youngman [Wed, 14 Oct 2015 23:43:03 +0000 (17:43 -0600)]
v1.2.1
Nathan Youngman [Wed, 14 Oct 2015 23:02:39 +0000 (17:02 -0600)]
documentation before coverage
[skip ci]
Nathan Youngman [Wed, 14 Oct 2015 22:54:23 +0000 (16:54 -0600)]
remove CircleCI for OS X tests
TravisCI handles it
Nathan Youngman [Wed, 14 Oct 2015 22:49:57 +0000 (16:49 -0600)]
TravisCI update
Evan Phoenix [Wed, 14 Oct 2015 17:50:51 +0000 (10:50 -0700)]
Don't watch named pipes
You can't watch a named pipe, same as a socket. The call to `Open` will just hang forever.
closes #98
Nathan Youngman [Wed, 8 Apr 2015 17:51:48 +0000 (11:51 -0600)]
add related projects to Readme
by @rjeczalik and @samjacobson
Nathan Youngman [Sun, 8 Feb 2015 20:29:58 +0000 (13:29 -0700)]
v1.2.0
closes #66 (apply mail)
Pieter Droogendijk [Sun, 8 Feb 2015 02:50:54 +0000 (03:50 +0100)]
When removing, delete from watches before removing from inotify (fixes go-fsnotify/fsnotify#40)
Pieter Droogendijk [Sun, 8 Feb 2015 01:36:05 +0000 (02:36 +0100)]
Add stressy test to inotify.
Pieter Droogendijk [Sun, 8 Feb 2015 01:34:12 +0000 (02:34 +0100)]
Make wakeup pipe non-blocking
Pieter Droogendijk [Sun, 8 Feb 2015 00:36:12 +0000 (01:36 +0100)]
Reduce repeated error code in inotify
Pieter Droogendijk [Sat, 7 Feb 2015 23:34:02 +0000 (00:34 +0100)]
Minor doc and test typos
Pieter Droogendijk [Sat, 7 Feb 2015 23:29:08 +0000 (00:29 +0100)]
Fix fdPoller.close to only close when fds have been assigned
Pieter Droogendijk [Sat, 7 Feb 2015 23:24:29 +0000 (00:24 +0100)]
Properly clean fds when newFdPoller fails
Pieter Droogendijk [Sat, 7 Feb 2015 23:16:57 +0000 (00:16 +0100)]
Clean up closing file descriptors in newFdPoller
Pieter Droogendijk [Sat, 7 Feb 2015 23:08:01 +0000 (00:08 +0100)]
Renamed two misnamed things
Pieter Droogendijk [Sat, 7 Feb 2015 23:05:53 +0000 (00:05 +0100)]
Add some unit tests for inotify_poller
Pieter Droogendijk [Sat, 7 Feb 2015 21:39:58 +0000 (22:39 +0100)]
Close inotify fd from watcher, not from poller
Pieter Droogendijk [Sat, 7 Feb 2015 21:23:17 +0000 (22:23 +0100)]
Comment about the buffer size to epoll_wait
Pieter Droogendijk [Sat, 7 Feb 2015 21:18:46 +0000 (22:18 +0100)]
Generate inotify fd in NewWatcher, pass fd into newFdPoller
Pieter Droogendijk [Sat, 7 Feb 2015 21:10:39 +0000 (22:10 +0100)]
Remove NewSyscallError
Pieter Droogendijk [Sat, 7 Feb 2015 19:47:41 +0000 (20:47 +0100)]
Now use epoll so we can wake up readEvents
Nathan Youngman [Sat, 7 Feb 2015 18:10:00 +0000 (11:10 -0700)]
kqueue: wait to close kqueue until after removing watches
sending done would close w.kq before Remove had a chance to remove the watches with EV_DELETE, resulting in a file handle leak.
ref #59
also make Close() report the first error returned by Remove and continue.
closes #65
Pieter Droogendijk [Fri, 6 Feb 2015 01:47:13 +0000 (02:47 +0100)]
inotify: closing watcher should now always shut down goroutine
(fixes #3)
closes #63
Pieter Droogendijk [Thu, 5 Feb 2015 21:19:17 +0000 (22:19 +0100)]
inotify: Retry read on EINTR
closes #62
Nathan Youngman [Tue, 3 Feb 2015 20:42:50 +0000 (13:42 -0700)]
Go 1.4.1 multi-os build on Travis CI
closes #60
Nathan Youngman [Sun, 4 Jan 2015 00:26:17 +0000 (17:26 -0700)]
Merge pull request #57 from go-fsnotify/ci
setup CircleCI to test on OS X
Nathan Youngman [Sat, 3 Jan 2015 01:38:45 +0000 (18:38 -0700)]
Setup CircleCI to test on OS X.
With help from @z00b.
Nathan Youngman [Thu, 1 Jan 2015 03:28:30 +0000 (20:28 -0700)]
readme: add USN journals to maybe list