クラス: Mongo::Retryable::ReadWORKer Private

継承:
base Worker
  • オブジェクト
すべて表示
定義:
lib/mongo/retryable/read_worker.rb

Overview

このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。

読み取り操作の再試行に関するロジックを実装します。

以来

  • 2.19.0

インスタンス属性の概要

baseworkerから継承される属性

#retryable

インスタンス メソッドの概要を折りたたむ

base Workerから継承されたメソッド

#initialize

コンストラクターの詳細

このクラスは、 Mongo::Retryable::BaseServerからコンストラクターを継承します。

インスタンス メソッドの詳細

# read_with_one_retry (オプション = nil){{ ... } =結果

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

ソケット エラーで読み取り操作のみが再試行されます。

ネットワークエラーが発生した場合、読み取り操作を 1 回の再試行で実行します。

このメソッドは、ドライバーによって内部整理操作の一部に使用されます。 アプリケーション要求された読み取りでは、この方法ではなく read_with_retry を使用する必要があります。

例:

読み取りを実行します。

read_with_one_retry do
  ...
end

パラメーター:

  • options ハッシュ | nil (デフォルトはnil

    オプション。

オプション ハッシュ( options ):

  • :retry_message string

    再試行時にログするメッセージ。

結果:

  • 引数なしで指定されたブロックを呼び出します

次の値を返します。

  • 結果

    操作の結果。

以来

  • 2.2.6



153
154
155
156
157
158
159
160
161
ファイル 'lib/mongo/retryable/read_worker.rb' 行 153

デフォルト read_with_one_retry(options = nil)
  ノードの数
ヘルプ *retryable_exceptions, エラー::PoolError => e
  発生 e ただし、 e.write_retryable?

  retry_message = options & & options[:retry_message]
  log_retry(e, メッセージ: retry_message)
  ノードの数
end

# read_with_retry(セッション = nil、server_selector = nil、context = nil、開発ブロック)= 結果

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

再試行を使用して読み取り操作を実行します。

このメソッドは、指定されたサーバー セレクターのサーバー選択を実行し、指定された ブロックに中断します。これにより、最初のクエリ操作が実行され、その結果が返されます。 ブロックは、操作用に選択されたサーバーに渡されます。 ブロックが例外を発生させ、この例外が読み取り再試行可能なエラーに対応し、クライアントで読み取り再試行が有効になっている場合、このメソッドはサーバー選択を再度実行し、再度ブロックに中断します(別のサーバーが使用される可能性があります)。 ブロックが正常に返されると、ブロックの結果が返されます。

最近の再試行読み取りがオン(デフォルト)の場合、最初の読み取り操作は 1 回再試行されます。 レガシー再試行読み取りがオンになっている場合、 :max_read_retry クライアント設定に応じて最初の読み取り操作が 0 回以上再試行されます。デフォルトは1です。 読み取り再試行を無効にするには、 retry_reads: false を設定して最新の読み取り再試行をオフにし、クライアントで :max_read_retrys を0に設定します。

例:

読み取りを実行します。

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

パラメーター:

  • セッション Mongo::Session | nil (デフォルトはnil

    操作が実行されるセッション。

  • server_selector Mongo::ServerSelector::Selectable | nil (デフォルトはnil

    操作のサーバー セレクター。

  • context Mongo::Operation::Context | nil (デフォルトはnil

    読み取り操作のコンテキスト。

  • ブロック Proc

    実行するブロック。

次の値を返します。

  • 結果

    操作の結果。

以来

  • 2.19.0



117
118
119
120
121
122
123
124
125
126
127
ファイル 'lib/mongo/retryable/read_worker.rb' 行 117

デフォルト read_with_retry(セッション = nil, server_selector = nil, context = nil, &ブロック)
  場合 セッション.nil? & & server_selector.nil?
    delete_legacy_read_with_retry(&ブロック)
  elsif セッション&.retry_reads?
    latest_read_with_retry(セッション, server_selector, context, &ブロック)
  elsif クライアント.max_read_retry > 0
    legacy_read_with_retry(セッション, server_selector, context, &ブロック)
  else
    read_Without_retry(セッション, server_selector, &ブロック)
  end
end

# read_with_retry_cursor(セッション、server_selector、ビュー、コンテキスト: nil、+Block)= カーソル

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

再試行を使用して、カーソルを返す読み取り操作を実行します。

このメソッドは、指定されたサーバー セレクターのサーバー選択を実行し、指定された ブロックに中断します。これにより、最初のクエリ操作が実行され、その結果が返されます。 ブロックは、操作用に選択されたサーバーに渡されます。 ブロックが例外を発生させ、この例外が読み取り再試行可能なエラーに対応し、クライアントで読み取り再試行が有効になっている場合、このメソッドはサーバー選択を再度実行し、再度ブロックに中断します(別のサーバーが使用される可能性があります)。 ブロックが正常に返された場合、ブロックの結果( Mongo::Operation::Result )を使用して、結果セットの Mongo::Cursor オブジェクトが構築されます。 次に、カーソルが返されます。

最近の再試行読み取りがオン(デフォルト)の場合、最初の読み取り操作は 1 回再試行されます。 レガシー再試行読み取りがオンになっている場合、 :max_read_retry クライアント設定に応じて最初の読み取り操作が 0 回以上再試行されます。デフォルトは1です。 読み取り再試行を無効にするには、 retry_reads: false を設定して最新の読み取り再試行をオフにし、クライアントで :max_read_retrys を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

  • context 操作::Context | nil (デフォルトはnil

    カーソルで使用する操作コンテキスト 。

  • ブロック Proc

    実行するブロック。

次の値を返します。

  • (Cursor)

    結果セットのカーソル。

以来

  • 2.19.0



68
69
70
71
72
73
74
75
76
77
78
79
80
ファイル 'lib/mongo/retryable/read_worker.rb' 行 68

デフォルト read_with_retry_cursor(セッション, server_selector, 表示, context: nil, &ブロック)
  read_with_retry(セッション, server_selector, context) 行う |サーバー|
    結果 = ノードの数 サーバー

    # Ruby- 2367 : これは更新され、クエリ キャッシュは次を可能にします:
    マルチバッチ結果を持つ # キャッシュ カーソル。
    場合 クエリ キャッシュ.有効か & & !表示.コレクション.system_collection?
      CacheCursor.新着情報(表示, 結果, サーバー, セッション: セッション, context: context)
    else
      Cursor.新着情報(表示, 結果, サーバー, セッション: セッション, context: context)
    end
  end
end