Я взаимодействую с моим ReplicaSet MongoDB через мой Ruby mon go драйвер, v. 2.6.2 .
@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)):
Так что это только при успешном инициировании возникновения исключения.
Есть идеи, как получить правильный ответ, а не исключение?