diff --git a/lib/foreman/engine.rb b/lib/foreman/engine.rb index 4d0fefa..8fc6e96 100644 --- a/lib/foreman/engine.rb +++ b/lib/foreman/engine.rb @@ -275,8 +275,12 @@ private loop do io = IO.select(@readers.values, nil, nil, 30) (io.nil? ? [] : io.first).each do |reader| - data = reader.gets - output_with_mutex name_for(@readers.invert[reader]), data + if reader.eof? + @readers.delete_if { |key, value| value == reader } + else + data = reader.gets + output_with_mutex name_for(@readers.invert[reader]), data + end end end rescue Exception => ex