如果主节点出现故障,如何设置Mongoid重试

时间:2019-12-16 17:15:57

标签: ruby-on-rails mongoid

我有一个使用Moongoid的Rails 5.0应用程序。我们通过调用rs.stepDown()手动关闭主数据库来进行一些测试。如果我们立即编辑记录,则会出现此错误:

Mongo::Error::OperationFailure (not master and slaveOk=false (13435)):

我的具体问题是如何配置mondoid.yml以回退到辅助数据库,而我的通用问题是,有没有一种方法可以配置mongoid在引发异常几秒钟后重试?

谢谢, 凯文

1 个答案:

答案 0 :(得分:0)

您所指的行为称为“可重试写入”,它是由Ruby MongoDB驱动程序(mongo gem)而非Mongoid控制的。

如果应用程序使用当前驱动程序,并且正在服务器3.6或更高版本上运行,则无需进行配置-默认情况下可重试写入处于启用状态。

如果您使用的是Rails 5,则根据Mongoid兼容性表(https://docs.mongodb.com/mongoid/master/tutorials/mongoid-installation/#rails-compatibility),将使用不再受支持的Mongoid 6.0 / 6.1。如果您还具有旧版本的驱动程序,则它可能无法实现与当前驱动程序版本相同的可重试写入。理想情况下,应该将驱动程序和/或应用程序升级到当前驱动程序,如果不可能,则可能需要将相关更改修补/回传到驱动程序版本中。