From b86389e1946e31a8721c207635bcd979393fcd98 Mon Sep 17 00:00:00 2001 From: Julien Dumas Date: Wed, 28 Feb 2018 15:20:58 +0100 Subject: [PATCH] abnormal termination fails silently + burns cpu fix: use @pipe.read_nonblock(1) instead of @pipe.read(1) fix: rescue EOFError (raised by #read_nonblock) and wait 1 seconds before iterating over --- lib/rb-fsevent/fsevent.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/rb-fsevent/fsevent.rb b/lib/rb-fsevent/fsevent.rb index 808609d..953bc61 100644 --- a/lib/rb-fsevent/fsevent.rb +++ b/lib/rb-fsevent/fsevent.rb @@ -52,7 +52,7 @@ def run found_length = false while reading_length - byte = @pipe.read(1) + byte = @pipe.read_nonblock(1) if "#{byte}" =~ /\d/ length << byte found_length = true @@ -79,6 +79,8 @@ def run callback.call(modified_paths, decoded) end end + rescue EOFError + sleep 1 rescue Interrupt, IOError, Errno::EBADF ensure stop