From 8264b725de40ca81cfa5dbba9363eca70145137f Mon Sep 17 00:00:00 2001 From: Dominic Breuker Date: Sun, 11 Aug 2019 23:01:53 +0200 Subject: [PATCH 1/2] improve read syscall reliability by inreasing buffer size and handling old kernel errors --- internal/fswatcher/inotify/inotify.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/fswatcher/inotify/inotify.go b/internal/fswatcher/inotify/inotify.go index 476769d..3d2e85e 100644 --- a/internal/fswatcher/inotify/inotify.go +++ b/internal/fswatcher/inotify/inotify.go @@ -17,7 +17,8 @@ const maximumWatchersFile = "/proc/sys/fs/inotify/max_user_watches" // set to -1 if the number cannot be determined var MaxWatchers int = -1 -const EventSize int = unix.SizeofInotifyEvent +// sizeof(struct inotify_event) + NAME_MAX + 1 +const EventSize int = unix.SizeofInotifyEvent + 255 + 1 func init() { mw, err := getMaxWatchers() @@ -71,7 +72,7 @@ func (i *Inotify) Watch(dir string) error { func (i *Inotify) Read(buf []byte) (int, error) { n, errno := unix.Read(i.FD, buf) - if n < 0 { + if n < 1 { return n, fmt.Errorf("reading from inotify fd %d: errno: %d", i.FD, errno) } return n, nil From 0e4d11951bec5b0e6ca0e76637bfd2075626fba9 Mon Sep 17 00:00:00 2001 From: Dominic Breuker Date: Sun, 11 Aug 2019 23:09:44 +0200 Subject: [PATCH 2/2] split off image version for docker image check --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 554692a..0ab7e06 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ test: # Drops you into a shell in the development container and mounts the source code # You can edit to source on your host, then run go commans (e.g., `go test ./...`) inside the container dev: - sh -c "if ! docker image ls | grep '$(DEV_IMAGE)'; then echo 'building dev image'; docker build -f $(DEV_DOCKERFILE) -t $(DEV_IMAGE) .; fi" + sh -c "if ! docker image ls | grep '$(DEV_IMAGE)' | cut -d ':' -f1; then echo 'building dev image'; docker build -f $(DEV_DOCKERFILE) -t $(DEV_IMAGE) .; fi" docker run -it \ --rm \ -v $(PROJECT_DIR):/go/src/github.com/dominicbreuker/pspy \ @@ -38,7 +38,7 @@ example: # builds one set of static binaries that should work on any system without dependencies, but are huge # builds another set of binaries that are as small as possible, but may not work build: - sh -c "if ! docker image ls | grep '$(BUILD_IMAGE)'; then echo 'building build image'; docker build -f $(BUILD_DOCKERFILE) -t $(BUILD_IMAGE) .; fi" + sh -c "if ! docker image ls | grep '$(BUILD_IMAGE)' | cut -d ':' -f1; then echo 'building build image'; docker build -f $(BUILD_DOCKERFILE) -t $(BUILD_IMAGE) .; fi" mkdir -p $(PROJECT_DIR)/bin docker run -it \