如果在使用jruby的线程中运行活动记录查询,则不会终止



我有一个查询查找postgres -tables在jruby线程内。

虽然两者没有区别,但是活动记录并不终止于与某些表有关的某些查询,尽管它终止于其他一些表。

我检查了它是否依赖于这些表的索引,或者它们的结构,但它不是,或者我找不到它,仅限于我能区分的所有结构。

所以我用raw-sql编码了相同的算法,它工作了。

因此gem 'activerecord-jdbcpostgresql-adapter', '>= 61.0-java'一定有bug。

我使用'rails', '~>jruby-9.2.14.0.

它的工作原理如下:Thread.new { query = <<~SQL [...] SQL ActiveRecord::Base.connection.execute(query) }

它只适用于一些表,但不是所有表:Thread.new { Table.where(p1: s1) }

遗憾的是,到目前为止我不能给你一个提示如何复制它,因为我没有抓住表格的差异。问我,如果你有任何背景灵感的猜测。

作为一种解决方法,可以通过以下方式限制调用的线程数量:

array1 =[…];Thread_index = 0;Max_threads = 2;索引= 0;Continue = true;Result = [];线程= []而继续;而thread_index <max_threads线程&>结束

所以不知何故最大的线程数不查找所有数据库表?

限于我的理解程度,我会说,上述解决方案不是线程保存,因为它可能是,一个胎面在某种程度上是外部使用的?!

最新更新