ruby - replSetStepDown 工作,但 EOF 错误返回到我的 Ruby mongo 驱动程序
问题描述
我正在通过我的Ruby mongo 驱动程序 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+ 服务器。
推荐阅读
- javascript - 在 div JavaScript ajax 中显示输入数据(无 jquery)
- java - OOP 链接类
- c# - 根据位置管理用户池
- python - np.exp 溢出解决方法
- python - GLM R 与 Python
- postman - Newman & Postman:如何使用 Newman 从文件中读取输入
- html - 为什么我在输入电子邮件时没有显示我的订单状态?
- asp.net-mvc-5 - CS0012 类型“XtraReport”在未引用的程序集中定义
- c# - 当玩家移动时需要帮助退出 IEnumerator
- python-3.x - 在数据帧的所有元素中的特定位置插入子字符串(Python)