类:Mongo::Retryable::ReadWorker Private

继承:
BaseWorker 显示全部
定义于:
构建/ruby-driver-v2.19/lib/ mongo /retryable/read_worker.rb

Overview

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

实现有关重试读取操作的逻辑。

由于:

  • 2.19.0

实例属性摘要

BaseWorker继承的属性

#retryable

实例方法摘要折叠

BaseWorker继承的方法

#initialize

构造函数详情

该类从Mongo::Retryable::BaseWorker继承了一个构造函数

实例方法详细信息

# read_with_one_retry (options = nil) { ... } ⇒结果

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

注意:

这只在套接字错误时重试读取操作。

在出现网络错误时执行读取操作并重试一次。

驾驶员使用此方法执行某些内部管理操作。 应用程序请求的读取应使用 read_with_retry 而不是此方法。

例子:

执行读取。

read_with_one_retry do
  ...
end

参数:

  • 选项 哈希 | nil (默认为: nil

    选项。

选项哈希 ( options ):

  • :retry_message string

    重试时要记录的消息。

产量:

  • 不带参数调用提供的区块

返回:

  • (结果)

    操作的结果。

由于:

  • 2.2.6



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 = 选项 && 选项[:retry_message]
  log_retry(e, 消息: retry_message)
  产量
end

# read_with_retry (session = nil, server_selector = nil, &block) ⇒结果

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

执行带重试的读操作。

此方法为指定的服务器选择器执行服务器选择,并让出提供的区块,该区块应执行初始查询操作并返回其结果。 区块将传递到为操作选择的服务器。 如果区块引发异常,并且该异常对应于读取可重试错误,并且为客户端启用了读取重试,则此方法将再次执行服务器选择并再次让出该区块(可能使用不同的服务器)。 如果区块成功返回,则返回区块的结果。

如果打开了现代重试读取(这是默认),则初始读取操作将重试一次。 如果开启传统重试读取,则初始读取操作将重试零次或多次,具体取决于 :max_read_retries客户端设置,默认值为1 。 要禁用读取重试,请通过在客户端上设置 retry_reads: false设立:max_read_retries 设置为0来关闭现代读取重试。

例子:

执行读取。

read_with_retry(session, server_selector) do |server|
  ...
end

参数:

  • 会话 ( Mongo::Session | nil ) (默认为: nil

    正在运行操作的会话。

  • server_selector ( Mongo::ServerSelector::Selectable | nil ) (默认为: nil

    该操作的服务器选择器。

  • ( Proc )

    要执行的区块。

返回:

  • (结果)

    操作的结果。

由于:

  • 2.19.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来关闭现代读取重试。

例子:

执行返回游标的读取。

cursor = read_with_retry_cursor(session, server_selector, view) do |server|
  # return a Mongo::Operation::Result
  ...
end

参数:

  • 会话 ( Mongo::Session )

    正在运行操作的会话。

  • server_selector ( Mongo::ServerSelector::Selectable )

    该操作的服务器选择器。

  • 查看 ( CollectionView )

    定义查询的CollectionView

  • ( Proc )

    要执行的区块。

返回:

  • (Cursor)

    结果设立的游标。

由于:

  • 2.19.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