replSetStepDown 有效,但 EOF 错误返回到我的 Ruby mongo 驱动程序
replSetStepDown works, but an EOF error is returned to my Ruby mongo driver
我正在通过我的 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)):
所以只有在成功启动时才会引发异常。
知道如何获得正确的响应而不是异常吗?
error: EOFError: end of file reached
这是 4.2 之前的服务器中的预期行为,这些服务器在关闭时关闭所有连接。 4.2+ 服务器没有。
Any idea how to get a proper response, rather than an exception?
使用 4.2+ 服务器。
我正在通过我的 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)):
所以只有在成功启动时才会引发异常。
知道如何获得正确的响应而不是异常吗?
error: EOFError: end of file reached
这是 4.2 之前的服务器中的预期行为,这些服务器在关闭时关闭所有连接。 4.2+ 服务器没有。
Any idea how to get a proper response, rather than an exception?
使用 4.2+ 服务器。