如何解决如果使用 jruby 在线程中运行,活动记录查询不会终止
我有一个查询,在 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
那么不知何故没有为所有数据库表查找最大线程数?
受限于我的理解程度,我想说的是,上述解决方法不是线程节省的,因为它可能是以某种方式在外部使用胎面?!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。