我正在通过Ruby mongo driver, v. 2.6.2与MongoDB ReplicaSet进行交互。
@mongo_client = Mongo::Client.new(@uri, connect: :replica_set).use("admin")
当我要启动故障转移时,我运行此命令
begin
failover = @mongo_client.command(
{
replSetStepDown: 60,
secondaryCatchUpPeriodSecs: 10,
force: false
}
)
Rails.logger.error "failover: #{failover}"
rescue Mongo::Error::SocketError => e
Rails.logger.error "error: #{e.to_s.inspect}"
end
该命令有效,并且发生故障转移。但是提出了一个例外,这就是为什么我必须挽救它:
error: EOFError: end of file reached
当我传递无效的参数时,我会得到正确的响应,例如:
failover: Mongo::Error::OperationFailure (stepdown period must be longer than secondaryCatchUpPeriodSecs (2)):
因此,只有在成功启动时才会引发异常。
任何想法如何获得适当的回应,而不是例外?
错误:EOFError:已到达文件末尾
这是4.2之前版本的服务器中的预期行为,当所有服务器断开连接时,它们都会关闭。 4.2+服务器没有。
任何想法如何获得适当的回应,而不是例外?
使用4.2+服务器。