Email or username:

Password:

Forgot your password?
Top-level
Eugen Rochko

@zundan Oh!!!

Is this the problem everyone's been having?! How did you manage to find it?

And I never noticed it because I'm still using 2.6.6 in production...

9 comments
zunda

@Gargron I've just noticed this Ruby's bug in a PR to a work related code, while I personally haven't been able to reproduce Sidekiq hanging after a while as Heroku restarts processes every 24 hours.

spla :senyera: :vim:

@Gargron well, only thing Sidekiq log was claiming was that 'warn your redis connection...' but yes, on ruby 2.7.3
(ruby 2.7.3p183 (2021-04-05 revision 6847ee089d))
@zundan

Eugen Rochko

@spla @zundan Could you confirm that you are affected by this? There's code you can run in the linked bug report

zunda

@Gargron @spla Yep. Reproduced locally on Ubuntu 20.04 and ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]

$ ruby /tmp/test.rb
Ran 65536 times

and top shows 99-100 %CPU for the ruby.

Also on a Hobby dyno on Heroku (waiting for a few minutes):

$ heroku run bash
~ $ which ruby
/app/bin/ruby
~ $ ruby --version
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]
~ $ cat <<_END > test.rb
> require 'resolv'
> 65536.times { Resolv::DNS.new.getresource('www.example.net', Resolv::DNS::Resource::IN::A) }
> puts "Ran 65536 times"
> Resolv::DNS.new.getresource('www.example.net', Resolv::DNS::Resource::IN::A)
> puts "Ran 65537 times"
> _END
~ $ ruby test.rb
Ran 65536 times
^Z
[1]+ Stopped ruby test.rb
~ $ bg
[1]+ ruby test.rb &
~ $ top
:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11 u6876 20 0 93216 34284 6100 R 99.7 0.1 1:59.79 ruby
:

@Gargron @spla Yep. Reproduced locally on Ubuntu 20.04 and ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]

$ ruby /tmp/test.rb
Ran 65536 times

and top shows 99-100 %CPU for the ruby.

Also on a Hobby dyno on Heroku (waiting for a few minutes):

$ heroku run bash
~ $ which ruby
/app/bin/ruby
~ $ ruby --version
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]
~ $ cat <<_END > test.rb
> require 'resolv'
> 65536.times { Resolv::DNS.new.getresource('www.example.net', Resolv::DNS::Resource::IN::A) }

Eugen Rochko

@spla @zundan Can you try switching to Ruby 2.6.6? I believe your Sidekiq should no longer get stuck then

spla :senyera: :vim:

@Gargron
I'm running ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux] so no problems so far.

@zundan

Go Up