Errno :: EIO: I / O Error - <STDOUT>

class FaxFetchWorker include Sidekiq::Worker sidekiq_options :retry => false def perform(job_id=0) logger.warn "perform is invoked." FaxSource.all.each do |source| ... end end end 

Error Errno::EIO: Input/output error - <STDOUT> on line # 6

+6
source share
3 answers

Line number 6 in your code is

  logger.warn "perform is invoked." 

This code requires an open STDOUT stream, and your error name is Errno :: EIO .

In linux, EIO means that an attempt has been made to read / write to a stream that is currently unavailable. This can happen due to a physical error or when the lost process (whose parent died) is trying to get stdio from the parent process or when the thread is closed.

+8
source

Workers can still work in the background, but no longer have access to STDOUT.

those. These workers still continue to handle jobs, but when it comes to printing, they complain about EIO.

(In my case, it was caused by killing the tmux server WITHOUT killing workers. Make ps -ef | grep resque and there they are.)

Decision:

Kill these workers and start new ones.

eg. pkill resque-1.25.2 (or whatever the name of the worker)

+1
source

For me, redis restart solved it: redis restart service

-1
source

Source: https://habr.com/ru/post/969725/


All Articles