replSetStepDown起作用,但是EOF错误返回给我的Ruby mongo驱动程序

问题描述 投票:0回答:1

我正在通过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)):

因此,只有在成功启动时才会引发异常。

任何想法如何获得适当的回应,而不是例外?

ruby mongodb replicaset
1个回答
0
投票

错误:EOFError:已到达文件末尾

这是4.2之前版本的服务器中的预期行为,当所有服务器断开连接时,它们都会关闭。 4.2+服务器没有。

任何想法如何获得适当的回应,而不是例外?

使用4.2+服务器。

© www.soinside.com 2019 - 2024. All rights reserved.