是否不再需要使用" with_connection"将多个线程中的连接包装起来?

时间:2018-02-03 14:14:02

标签: ruby-on-rails ruby multithreading activerecord

我使用的是最新版本的ActiveRecord,并且拥有一个domains模型的数据库,并拥有这个,池大小为10:

10.times.map do
  Thread.new do
    Domain.create(name: 'test')
  end
end.each(&:join)

现在,当我将轮询大小设置为小于线程数时,此代码超时,这表明ActiveRecord为每个线程(预期)分配了新的连接轮询。但是现在我修改了这段代码:

10.times.map do
  Thread.new do
    Domain.create(name: 'test')
  end
end.each(&:join)

sleep 1
10.times.map do
  Thread.new do
    Domain.create(name: 'test')
  end
end.each(&:join)

我希望这段代码失败,因为在完成10个线程后,我希望ActiveRecord留下那10个连接"孤立" (现在我已经使用了with_connection,它应该打开/关闭它们)。然而,这段代码成功完成,向我显示在某个地方,ActiveRecord添加了支持以自动关闭轮询,而不使用with_connection。这是真的吗?

0 个答案:

没有答案