Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Puma 5.0.2, Rails 6.0.3.4 - "WARNING: Detected 1 Thread(s) started in app boot" #2421

Closed
ndbroadbent opened this issue Oct 10, 2020 · 2 comments

Comments

@ndbroadbent
Copy link

ndbroadbent commented Oct 10, 2020

Sorry for opening another one of these issues! I previously opened this one: #2237

I'm now running Rails (6.0.3.4) and Puma (5.0.2), so I'd like to get rid of this last warning and keep the logs tidy. One of my on-premise customers has also mentioned it to me, since they saw the "WARNING" in the logs and they were concerned that something was wrong.

The concurrent-ruby issue is now fixed, so I'm down to one last Thread warning:

[96749] ! WARNING: Detected 1 Thread(s) started in app boot:
[96749] ! #<Thread:0x00007fb04fd99390 /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:333 sleep> - /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:336:in `sleep'

dentarg mentioned that it's coming from activerecord: #2237 (comment)

jrochkind and schneems have been talking about it here: rails/rails#37066

It sounds like this warning can be safely ignored, so is there any way that Puma could just silence it for this specific case?

If not, what would be a good workaround to fix it? (Either in puma, or in rails)?

I crashed #spawn_thread in activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb to show the full stack trace:

[96052] Puma starting in cluster mode...
[96052] * Version 5.0.2 (ruby 2.7.1-p83), codename: Spoony Bard
[96052] * Min threads: 5, max threads: 5
[96052] * Environment: production
[96052] * Process workers: 2
[96052] * Preloading application
[96052] ! Unable to load application: NoMethodError: undefined method `crash_in_spawn_thread!' for ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper:Class
Traceback (most recent call last):
        49: from /Users/ndbroadbent/.rbenv/versions/2.7.1/bin/puma:23:in `<main>'
        48: from /Users/ndbroadbent/.rbenv/versions/2.7.1/bin/puma:23:in `load'
        47: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/puma-5.0.2/bin/puma:10:in `<top (required)>'
        46: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/puma-5.0.2/lib/puma/cli.rb:80:in `run'
        45: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/puma-5.0.2/lib/puma/launcher.rb:171:in `run'
        44: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/puma-5.0.2/lib/puma/cluster.rb:501:in `run'
        43: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/puma-5.0.2/lib/puma/runner.rb:131:in `load_and_bind'
        42: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/puma-5.0.2/lib/puma/configuration.rb:256:in `app'
        41: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/puma-5.0.2/lib/puma/configuration.rb:330:in `load_rackup'
        40: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
        39: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
        38: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
        37: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
        36: from config.ru:5:in `block in <main>'
        35: from config.ru:5:in `require_relative'
        34: from /Users/ndbroadbent/code/myapp/config/environment.rb:7:in `<top (required)>'
        33: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/application.rb:363:in `initialize!'
        32: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:65:in `run_initializers'
        31: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
        30: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
        29: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
        28: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:347:in `call'
        27: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:347:in `each'
        26: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
        25: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
        24: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
        23: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
        22: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:68:in `block in run_initializers'
        21: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:35:in `run'
        20: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/railties-6.0.3.4/lib/rails/initializable.rb:35:in `instance_exec'
        19: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/railtie.rb:198:in `block in <class:Railtie>'
        18: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/lazy_load_hooks.rb:42:in `on_load'
        17: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/lazy_load_hooks.rb:42:in `each'
        16: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/lazy_load_hooks.rb:43:in `block in on_load'
        15: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/lazy_load_hooks.rb:66:in `execute_hook'
        14: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/lazy_load_hooks.rb:61:in `with_execution_control'
        13: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/lazy_load_hooks.rb:71:in `block in execute_hook'
        12: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/lazy_load_hooks.rb:71:in `class_eval'
        11: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/railtie.rb:201:in `block (2 levels) in <class:Railtie>'
        10: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_handling.rb:51:in `establish_connection'
         9: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:1059:in `establish_connection'
         8: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
         7: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:1060:in `block in establish_connection'
         6: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:1060:in `new'
         5: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `initialize'
         4: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:360:in `run'
         3: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:323:in `register_pool'
         2: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:323:in `synchronize'
         1: from /Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:324:in `block in register_pool'
/Users/ndbroadbent/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:333:in `spawn_thread': undefined method `crash_in_spawn_thread!' for ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper:Class (NoMethodError)
@ndbroadbent ndbroadbent changed the title "WARNING: Detected 1 Thread(s) started in app boot:" from Rails Puma 5.0.2, Rails 6.0.3.4 - "WARNING: Detected 1 Thread(s) started in app boot" Oct 10, 2020
@nateberkopec
Copy link
Member

I believe the warning is correct. If Rails' reaper thread is running during a fork, it could be allocating memory and cause a deadlock.

@nateberkopec
Copy link
Member

Closing and moving to rails/rails#37066, as I believe this is a legitimate Rails issue (happy to reopen if I'm wrong though).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants