我有一个使用Moongoid的Rails 5.0应用程序。我们通过调用rs.stepDown()手动关闭主数据库来进行一些测试。如果我们立即编辑记录,则会出现此错误:
Mongo::Error::OperationFailure (not master and slaveOk=false (13435)):
我的具体问题是如何配置mondoid.yml以回退到辅助数据库,而我的通用问题是,有没有一种方法可以配置mongoid在引发异常几秒钟后重试?
谢谢, 凯文
答案 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。如果您还具有旧版本的驱动程序,则它可能无法实现与当前驱动程序版本相同的可重试写入。理想情况下,应该将驱动程序和/或应用程序升级到当前驱动程序,如果不可能,则可能需要将相关更改修补/回传到驱动程序版本中。