I have a faye ruby client on a heroku worker (using sidekiq - 5 threads) that publishes to the faye server running on linode.
The worker crashes after a few minutes with a buffer overflow detected message.
*Code
  EM.epoll
  EM.run {
    publication = @client.publish('/glive-bullion','body'=>body)
    publication.callback do
      EM.stop_event_loop
    end
    publication.errback do |error|
      puts 'There was a problem: ' + error.message
      EM.stop_event_loop
    end
  }
I have tried the following: 1) EM.epoll before EM.run 2) EM.stop_event_loop in the respective callbacks.
I understand that the file descriptor restriction is causing this issue.
Question: How do i release the client and stop the EM event loop to release the open file completely?
Is it because of sidekiq running in threaded mode?
                        
Ok, I realised the mistake.
I was creating the client outside the EM.run block. Once i moved the initialization inside the EM.run block, everything was working fine.