当客户端通过Ruby Timeout :: timeout中断时,对ActiveRecord / PostgreSQL事务的影响

时间:2019-06-08 16:51:39

标签: ruby-on-rails ruby postgresql activerecord sqltransaction

在开始之前,是的,我知道使用Ruby的Timeout是一个可怕的想法。但这更多是一个思想实验。

比方说,我有一些Ruby代码包装在Timeout::timeout块中,该块完成了SELECTUPDATE和{{1 } s。鉴于INSERT的性质,我们可以在准备或等待SQL事务完成时中止操作。

理论上,如果在Ruby超时中断之前向DB发送请求,则事务将在DB上完成,但客户端将无法响应该完成。当然,根据Ruby代码的上下文,如果需要后续交易才能使我的模型被认为是完整和稳定的,则数据最终可能是不完整的,以及由于代码未完全完成而造成的其他可能的副作用

还有其他可能的危险或副作用吗?交易是否有可能以其他方式挂起或失败?还是关于数据和应用程序需要说的上下文级别知识太多了?

0 个答案:

没有答案