Sidekiq和Rails模型验证

时间:2015-05-26 12:31:21

标签: ruby-on-rails-4 activerecord sidekiq

我有一个模型验证:create验证某个属性是唯一的,并且我使用sidekiq上的一些后台作业创建了许多元素,在50个mysql连接池上使用50个并发。

由于某些原因,我看到许多重复项,我有验证,是否存在并发问题?

数量级是数百万个插入的一些thounsands记录,我唯一的问题是我显然无法调试这个,我无法预测如果我将一个节点添加到我的数据库集群会发生什么或者,如果我改变在数据库中插入内容的方式,就会发生这种情况。

有谁知道这里发生了什么或如何继续调试?

1 个答案:

答案 0 :(得分:3)

使用Rails验证唯一性是一个巨大的竞争条件。不要使用它。保证数据库唯一性的唯一方法是使用唯一索引。

https://rietta.com/blog/2015/05/04/validates-uniqueness-race-condition-in-ruby-on-rails/