From b86389e1946e31a8721c207635bcd979393fcd98 Mon Sep 17 00:00:00 2001 From: Julien Dumas Date: Wed, 28 Feb 2018 15:20:58 +0100 Subject: [PATCH 1/3] 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 From 03a71a2ec700eb86c078389f16a4db2edd052750 Mon Sep 17 00:00:00 2001 From: Julien Dumas Date: Sat, 3 Mar 2018 19:08:23 +0100 Subject: [PATCH 2/3] remove useless part rescue EOFError since it's being catched at line 82 (EOFError is a child class of IOError) --- lib/rb-fsevent/fsevent.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/rb-fsevent/fsevent.rb b/lib/rb-fsevent/fsevent.rb index 953bc61..23c5aa9 100644 --- a/lib/rb-fsevent/fsevent.rb +++ b/lib/rb-fsevent/fsevent.rb @@ -79,8 +79,6 @@ def run callback.call(modified_paths, decoded) end end - rescue EOFError - sleep 1 rescue Interrupt, IOError, Errno::EBADF ensure stop From 93c22da8aa70ad343c2e57d0ee3187a760b4d674 Mon Sep 17 00:00:00 2001 From: Julien Dumas Date: Sat, 3 Mar 2018 19:09:52 +0100 Subject: [PATCH 3/3] remove useless part rescue EOFError since it's being catched at line 82 (EOFError is a child class of IOError) --- lib/rb-fsevent/fsevent.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/rb-fsevent/fsevent.rb b/lib/rb-fsevent/fsevent.rb index 953bc61..23c5aa9 100644 --- a/lib/rb-fsevent/fsevent.rb +++ b/lib/rb-fsevent/fsevent.rb @@ -79,8 +79,6 @@ def run callback.call(modified_paths, decoded) end end - rescue EOFError - sleep 1 rescue Interrupt, IOError, Errno::EBADF ensure stop