类:Mongo::Retryable::ReadWorker Private
- 继承:
-
BaseWorker
- 对象
- BaseWorker
- Mongo::Retryable::ReadWorker
- 定义于:
- 构建/ruby-driver-v2.19/lib/ mongo /retryable/read_worker.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
实现有关重试读取操作的逻辑。
实例属性摘要
从BaseWorker继承的属性
实例方法摘要折叠
-
# read_with_one_retry (options = nil) { ... } ⇒ 结果
private
在出现网络错误时执行读取操作并重试一次。
-
# read_with_retry (session = nil, server_selector = nil, &block) ⇒ 结果
private
执行带重试的读操作。
-
# read_with_retry_cursor (session, server_selector, view, &block) ⇒ 游标
private
执行返回游标的读操作并重试。
从BaseWorker继承的方法
构造函数详情
该类从Mongo::Retryable::BaseWorker继承了一个构造函数
实例方法详细信息
# read_with_one_retry (options = nil) { ... } ⇒结果
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
这只在套接字错误时重试读取操作。
在出现网络错误时执行读取操作并重试一次。
驾驶员使用此方法执行某些内部管理操作。 应用程序请求的读取应使用 read_with_retry 而不是此方法。
149 150 151 152 153 154 155 156 157 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/retryable/read_worker.rb', 第149行 def read_with_one_retry( = nil) 产量 救援 *retryable_exceptions, 错误::PoolError => e 提高 e 除非 e.write_retryable? = && [:retry_message] log_retry(e, 消息: ) 产量 end |
# read_with_retry (session = nil, server_selector = nil, &block) ⇒结果
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
执行带重试的读操作。
此方法为指定的服务器选择器执行服务器选择,并让出提供的区块,该区块应执行初始查询操作并返回其结果。 区块将传递到为操作选择的服务器。 如果区块引发异常,并且该异常对应于读取可重试错误,并且为客户端启用了读取重试,则此方法将再次执行服务器选择并再次让出该区块(可能使用不同的服务器)。 如果区块成功返回,则返回区块的结果。
如果打开了现代重试读取(这是默认),则初始读取操作将重试一次。 如果开启传统重试读取,则初始读取操作将重试零次或多次,具体取决于 :max_read_retries客户端设置,默认值为1 。 要禁用读取重试,请通过在客户端上设置 retry_reads: false设立:max_read_retries 设置为0来关闭现代读取重试。
113 114 115 116 117 118 119 120 121 122 123 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/retryable/read_worker.rb', 第113行 def read_with_retry(会话 = nil, server_selector = nil, 和块) if 会话.nil? && server_selector.nil? deprecated_legacy_read_with_retry(和块) elsif 会话&。retry_reads? modern_read_with_retry(会话, server_selector, 和块) elsif 客户端.max_read_retries > 0 legacy_read_with_retry(会话, server_selector, 和块) else read_ without_retry(会话, server_selector, 和块) end end |
# read_with_retry_cursor (session, server_selector, view, &block) ⇒游标
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
执行返回游标的读操作并重试。
此方法为指定的服务器选择器执行服务器选择,并让出提供的区块,该区块应执行初始查询操作并返回其结果。 区块将传递到为操作选择的服务器。 如果区块引发异常,并且该异常对应于读取可重试错误,并且为客户端启用了读取重试,则此方法将再次执行服务器选择并再次让出该区块(可能使用不同的服务器)。 如果该区块成功返回,则使用该区块的结果(应该是 Mongo::Operation::Result)为结果设立构造一个 Mongo::Cursor对象。 然后返回游标。
如果打开了现代重试读取(这是默认),则初始读取操作将重试一次。 如果开启传统重试读取,则初始读取操作将重试零次或多次,具体取决于 :max_read_retries客户端设置,默认值为1 。 要禁用读取重试,请通过在客户端上设置 retry_reads: false设立:max_read_retries 设置为0来关闭现代读取重试。
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/retryable/read_worker.rb', 第66行 def read_with_retry_cursor(会话, server_selector, 查看, 和块) read_with_retry(会话, server_selector) do |server| 结果 = 产量 server # RUBY- 2367 :这将被更新以允许查询缓存 #缓存具有多批处理结果的游标。 if 查询缓存.已启用? && !查看.集合.system_collection? 缓存游标.new(查看, 结果, server, 会话: 会话) else Cursor.new(查看, 结果, server, 会话: 会话) end end end |