dgroup / lazylead

Eliminate the annoying work within ticketing systems (Jira, GitHub, Trello). Allows automating (without admin access) daily actions like tickets fields verification, email notifications by JQL/GQL, meeting requests to your (or teammates) calendar.
https://lazylead.org
MIT License
72 stars 1 forks source link

ActiveRecord::ConnectionTimeoutError could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use #174

Closed dgroup closed 4 years ago

dgroup commented 4 years ago
[2020-07-14T05:00:00] DEBUG Task #1001 'xxx' is completed
{ 70184554745740 rufus-scheduler intercepted an error:
  70184554745740   job:
  70184554745740     Rufus::Scheduler::CronJob "0 5 * * 1-5" {}
  70184554745740   error:
  70184554745740     70184554745740
  70184554745740     ActiveRecord::ConnectionTimeoutError
  70184554745740     could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use
{ 70184554806220 rufus-scheduler intercepted an error:
  70184554806220   job:
  70184554806220     Rufus::Scheduler::CronJob "0 5 * * 1-5" {}
  70184554806220   error:
  70184554806220     70184554806220
  70184554806220     ActiveRecord::ConnectionTimeoutError
  70184554806220     could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:221:in `block in wait_poll'
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `loop'
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `wait_poll'
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:171:in `internal_poll'
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:297:in `internal_poll'
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `block in poll'
  70184554806220       /usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:175:in `synchronize'
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `poll'
  70184554806220       /usr/local/bundle/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:875:in `acquire_connection'
dgroup commented 4 years ago

Let's try to use this approach https://stackoverflow.com/questions/11248808/connection-pool-issue-with-activerecord-objects-in-rufus-scheduler

dgroup commented 4 years ago

Reproduced

    test "sqlite connection pool size" do
        CLI::App.new(Log::NOTHING, Schedule.new(Log::NOTHING, false)).run(
          home: ".",
          sqlite: "test/resources/#{no_ext(__FILE__)}.#{__method__}.db",
          vcs4sql: "upgrades/sqlite",
          testdata: true
        )
        Threads.new(10).assert do
            refute_empty ORM::Task.find(1).props
        end
      end

Here is the error

Testing started at 3:15 PM ...
/bin/zsh -c "bash -c 'env RBENV_VERSION=2.6.5 /usr/local/Cellar/rbenv/1.1.2/libexec/rbenv exec bundle exec ruby '\"'\"'-Ilib:test'\"'\"' /Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb --name /test_sqlite_connection_pool_size/'"
Started with run options --name /test_sqlite_connection_pool_size/ --seed 57848

ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.005 seconds); all pooled connections were in use
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:221:in `block in wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:171:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:297:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `block in poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:175:in `synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:875:in `acquire_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:221:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:189:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:290:in `cached_find_by_statement'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:171:in `find'
    /Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb:81:in `block (2 levels) in <class:AppTest>'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:57:in `block (3 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `block (2 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.005 seconds); all pooled connections were in use
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:221:in `block in wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:171:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:297:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `block in poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:175:in `synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:875:in `acquire_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:221:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:189:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:290:in `cached_find_by_statement'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:171:in `find'
    /Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb:81:in `block (2 levels) in <class:AppTest>'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:57:in `block (3 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `block (2 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.005 seconds); all pooled connections were in use
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:221:in `block in wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:171:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:297:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `block in poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:175:in `synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:875:in `acquire_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:221:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:189:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:290:in `cached_find_by_statement'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:171:in `find'
    /Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb:81:in `block (2 levels) in <class:AppTest>'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:57:in `block (3 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `block (2 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.005 seconds); all pooled connections were in use
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:221:in `block in wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:171:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:297:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `block in poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:175:in `synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:875:in `acquire_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:221:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:189:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:290:in `cached_find_by_statement'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:171:in `find'
    /Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb:81:in `block (2 levels) in <class:AppTest>'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:57:in `block (3 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `block (2 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.006 seconds); all pooled connections were in use
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:221:in `block in wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:171:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:297:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `block in poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:175:in `synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:875:in `acquire_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:221:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:189:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:290:in `cached_find_by_statement'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:171:in `find'
    /Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb:81:in `block (2 levels) in <class:AppTest>'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:57:in `block (3 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `block (2 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.006 seconds); all pooled connections were in use
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:221:in `block in wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:210:in `wait_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:171:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:297:in `internal_poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `block in poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:175:in `synchronize'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:166:in `poll'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:875:in `acquire_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:221:in `retrieve_connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_handling.rb:189:in `connection'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:290:in `cached_find_by_statement'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3/lib/active_record/core.rb:171:in `find'
    /Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb:81:in `block (2 levels) in <class:AppTest>'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:57:in `block (3 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:53:in `block (2 levels) in assert'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'

Minitest::UnexpectedError: RuntimeError: Only 4 out of 10 threads completed successfully
    /Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:70:in `assert'
    /Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb:79:in `block in <class:AppTest>'
/Users/yurii.dubinka/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/threads-0.3.0/lib/threads.rb:70:in `assert'
/Users/yurii.dubinka/projects/rlazylead/test/lazylead/cli/app_test.rb:79:in `block in <class:AppTest>'
Finished in 5.64803s
1 tests, 8 assertions, 0 failures, 1 errors, 0 skips
Coverage report generated for Unit Tests to /Users/yurii.dubinka/projects/rlazylead/coverage. 353 / 677 LOC (52.14%) covered.
Line coverage (52.14%) is below the expected minimum coverage (75.00%).
SimpleCov failed with exit 2

Process finished with exit code 2

This works fine, thus it might be a fix

    test "sqlite connection pool size" do
        CLI::App.new(Log::NOTHING, Schedule.new(Log::NOTHING, false)).run(
          home: ".",
          sqlite: "test/resources/#{no_ext(__FILE__)}.#{__method__}.db",
          vcs4sql: "upgrades/sqlite",
          testdata: true
        )
        Threads.new(10).assert do
          ActiveRecord::Base.connection_pool.with_connection do # <<
            refute_empty ORM::Task.find(1).props
          end
        end
      end