问题描述
我有一个查询,在 jruby 的一个线程中查找 postgres -tables。
尽管两个 me 没有区别,但活动记录不会因某些表的某些查询而终止,尽管它会因某些其他表而终止。
我检查了它是否取决于这些表的索引或其结构,但它没有,或者我找不到它,仅限于我可以区分的所有结构。
所以我使用 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) }
遗憾的是,到目前为止,我无法给您提示如何重现它,因为我没有发现表格之间的差异。问我,是否有任何背景启发的猜测。
解决方法
作为一种变通方法,可以限制诸如此类调用的线程数。
array1 = [...];线程索引= 0;最大线程数 = 2;指数 = 0;继续=真;结果 = [];线程 = [] 同时继续;而 thread_index
那么不知何故没有为所有数据库表查找最大线程数?
受限于我的理解程度,我想说的是,上述解决方法不是线程节省的,因为它可能是以某种方式在外部使用胎面?!