0

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

尽管两个我没有区别,但活动记录不会因某些表的某些查询而终止,尽管它确实会因某些其他表而终止。

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

因此,我使用 raw-sql 编写了相同的算法并且它起作用了。

因此,gem 'activerecord-jdbcpostgresql-adapter', '>= 61.0-java' 肯定存在错误。

我使用'rails'、'~> 6.1.0'和jruby-9.2.14.0。

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

它仅适用于某些表格,但不适用于所有表格: Thread.new { Table.where(p1: s1) }

遗憾的是,到目前为止,我无法提示您如何重现它,因为我没有发现表格的不同之处。问我,如果你有任何背景启发的猜测。

4

1 回答 1

0

作为一种解决方法,可以限制类似调用的线程数。

数组1 = [...]; 线程索引 = 0; max_threads = 2; 索引 = 0; 继续=真;结果 = []; 线程 = [] 同时继续;while thread_index < max_threads 线程 << Thread.new { if array1[index] == nil; 继续=假;别的; 结果<<函数(数组1 [索引]);结束 } 索引 += 1; thread_index += 1 结束threads.join;thread_index = 0 结束

那么不知何故,没有为所有数据库表查找最大线程数?

受限于我的理解程度,我想说的是,上述解决方法不是节省线程的,因为它可能是以某种方式在外部使用胎面?!

于 2021-03-17T20:00:04.470 回答