モジュール: Mongo::Retryable
- 次による拡張機能。
- 転送可能
- 次のドキュメントに含まれます。
- クラスター::CursorReaper 、 コレクション 、 コレクション::View::Aggregation::動作 、 コレクション:View::changeStream 、 コレクション:View::MapReduce 、 カーソル 、 データベース 、 データベース::View 、 Index::View 、SearchIndex: : ビュー 、 Server::Connection 、セッション
- 定義:
- lib/mongo/retryable.rb、
lib/mongo/retryable/base_worker.rb、
lib/mongo/retryable/read_worker.rb、
lib/mongo/retryable/backpression.rb、
lib/mongo/retryable/retry_olicy.rb、
lib/mongo/retryable/write_worker.rb
Overview
操作の再試行に関する基本的な動作を定義します。
名前空間で定義済み
Modules: バックプレッシャー クラス: baseServer、ReadServer、RetryPolicy、WriteServer
インスタンス メソッドの概要を折りたたむ
-
# read_worker =オブジェクト
private
再試行可能な読み取りを処理するための読み取りワーカーを返します。
-
# select_server(クラスター、server_selector、セッション、failed_server = nil、error: nil、タイムアウト: nil)⇒ Mongo::Server
private
これは、再試行中にテスト スイートが再試行中にサーバー選択が実行されたことをアサートできるようにする別の メソッドです。
-
# with_overload_retry(context: nil、retry_enabled: true) = オブジェクト
private
操作をオーバーロード再試行ロジックでラップします。
-
#write_worker =オブジェクト
private
再試行可能な書込みを処理するための書込みワーカーを返します。
インスタンス メソッドの詳細
# read_worker =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
これは公開メソッドのみであるため、テストはそれに基づいて期待を追加できます。
再試行可能な読み取りを処理するための読み取りワーカーを返します。
86 87 88 |
ファイル 'lib/mongo/retryable.rb' 行 86 デフォルト read_worker @read_worker ||= ReadWORKer.新着情報(自己) end |
# select_server(クラスター、server_selector、セッション、failed_server = nil、error: nil、タイムアウト: nil)⇒ Mongo::Server
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
これは、再試行中にテスト スイートが再試行中にサーバー選択が実行されたことをアサートできるようにする別の メソッドです。
これはパブリック メソッドであるため、必要に応じて読み取りおよび書込みワーカーの委任を介してアクセスできます。
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
ファイル 'lib/mongo/retryable.rb' 行 49 デフォルト [select_server](クラスター, server_selector, セッション, faild_server = nil, エラー: nil, timeout: nil) 非優先 = 場合 faild_server & & reduce_server?(クラスター, エラー) [ faild_server ] else [] end server_selector.[select_server]( クラスター, nil, セッション, 非優先: 非優先, timeout: タイムアウト ) end |
# with_overload_retry(context: nil、retry_enabled: true) ⇒ オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
操作をオーバーロード再試行ロジックでラップします。過負荷エラー(システムオーバーロードエラー+RetryableError)の場合、 は MAX_RETRIES 回まで、指数バックオフでブロックを再試行します。
ブロックにはサーバー選択が含まれている必要があるため、再試行時に再度実行されます。カーソル操作(getMore)では、カーソルが固定されているため、同じサーバーが再利用されます。
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
ファイル 'lib/mongo/retryable.rb' 行 117 デフォルト with_overload_retry(context: nil, retry_enabled: true) return ノードの数 ただし、 retry_enabled errors_count = 0 ループ 行う 結果 = ノードの数 return 結果 ヘルプ エラー::TimeoutError 発生 ヘルプ エラー::OperationFailure::ファミリー => e 発生 e ただし、 e.ラベル('SystemOverloadedError') & & e.ラベル('RetryableError') errors_count += 1 policy = クライアント.retry_ policies 遅延 = policy.バックオフ_遅延(errors_count) 発生 e ただし、 policy.Should_retry_overload?(errors_count, 遅延, context: context) Logger.logger.WARN(" により過負荷再試行が行われるようになりました: #{e.クラス.名前}: #{e.}") 休止(遅延) end end |
#write_worker =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
これは公開メソッドのみであるため、テストはそれに基づいて期待を追加できます。
再試行可能な書込みを処理するための書込みワーカーを返します。
96 97 98 |
ファイル 'lib/mongo/retryable.rb' 行 96 デフォルト write_worker @write_worker ||= Write Worker.新着情報(自己) end |