模块:Mongo::Error::ReadWriteRetryable

包含在:
Auth::Unauthorized , OperationFailure
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/error/read_write_retryable.rb

Overview

注意:

尽管该模块的方法是公共 API 的一部分,但这些方法是在此模块上定义的,而不是在包含该模块的类上定义的,因此,公共 API 不属于该模块的一部分。

一个模块,封装了指示错误是否可重试的功能。

由于:

  • 2.0.0

常量摘要折叠

WRITE_RETRY_ERRORS =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

会导致重试写入失败的错误代码和代码名称。

由于:

  • 2.0.0

[
  {:code_name => 'HostUnreachable', :code => 6},
  {:code_name => ' HostNotFound ', :code => 7},
  {:code_name => ' NetworkTimeout ', :code => 89},
  {:code_name => ' ShutdownInProgress ', :code => 91},
  {:code_name => ' PrimarySteppedDown ', :code => 189},
  {:code_name => 'ExceededTimeLimit', :code => 262},
  {:code_name => ' SocketException ', :code => 9001},
  {:code_name => ' NotMaster ', :code => 10107},
  {:code_name => ' InterruptedAtShutdown ', :code => 11600},
  {:code_name => ' InterruptedDueToReplStateChange ', :code => 11602},
  {:code_name => ' NotPrimaryNoSecondaryOk ', :code => 13435},
  {:code_name => ' NotMasterOrSecondary ', :code => 13436},
].冻结
WRITE_RETRY_MESSAGES =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

这些是神奇的错误消息,可能表明主节点发生变更。

由于:

  • 2.0.0

[
  ' not master ',
  ' node is Recovery ',
].冻结
RETRY_MESSAGES =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

这些是神奇的错误消息,可能表明mongos背后的集群重新配置。

由于:

  • 2.0.0

WRITE_RETRY_MESSAGES + [
  ' transport error ',
  ' socket 异常',
  " can't connect ",
  ' connect failed ',
  ' error querying ',
  ' could not get last error ',
  '连接尝试失败',
  ' Interrupted at shutdown ',
  ' unknown replica set ',
   dbclient 与服务器通信时出错
].冻结

实例方法摘要折叠

实例方法详细信息

#可重试?true , false

已弃用。

根据传统读取重试逻辑,该错误是否为可重试错误。

返回:

  • ( true , false )

由于:

  • 2.0.0



81
82
83
84
# File ' 构建/ruby-driver-v2.19/lib/ mongo /error/read_write_retryable.rb', 第81行

def 可重试?
  write_retryable? ||
  代码.nil? && RETRY_MESSAGES.任何?{ |m| message.包括?(m) }
end

# write_retryable?true , false

根据现代可重试读取和可重试写入规范,该错误是否为可重试错误。

传统可重试写入逻辑也使用此方法来确定错误是否为可重试错误。

返回:

  • ( true , false )

由于:

  • 2.0.0



93
94
95
96
# File ' 构建/ruby-driver-v2.19/lib/ mongo /error/read_write_retryable.rb', 第93行

def write_retryable?
  write_retryable_code? ||
  代码.nil? && WRITE_RETRY_MESSAGES.任何? { |m| message.包括?(m) }
end