クラス: Mongo::Cluster::CursorReaper Private
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::Cluster::CursorReaper
- 次のことが含まれます。
- 再試行可能
- 定義:
- build/ruby-Driver-v 2.19 /lib/mongo/cluster/readers/cursor_reader.rb
Overview
このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。
使い果たされることなくガベージコレクションされたカーソルを閉じるために、 強制終了カーソル 操作を定期的に送信するマネージャー。
定数の概要の削減
- 頻度 =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
カーソルリージョンが保留中の強制終了カーソル操作を送信するデフォルトの時間間隔。
1.freeze
インスタンス属性の概要を折りたたむ
- #cluster ⇒ Object readOnly private
インスタンス メソッドの概要を折りたたむ
-
#initialize(cluster) ⇒ CursorReaper
コンストラクター
private
カーソル リーパーを作成します。
-
# kill_cursor =オブジェクト(また: #execute、#ffresh)
private
保留中のすべての強制終了カーソル操作を実行します。
-
#read_sScheduled_kill_specs 詳しくは、オブジェクト
private
スケジュールされた強制終了カーソル操作の読み取りとデコード。
-
# register_cursor ( ID ) = オブジェクト
private
カーソル ID をアクティブとして登録します。
-
# schedule_kill_cursor (kill_spec) = オブジェクト
private
強制終了カーソル操作を最終的に実行するようにスケジュールします。
-
#unregister_cursor(id) ⇒ Object
private
カーソル ID の登録を解除し、アクティブでなくなったことを示します。
再試行可能な に含まれるメソッド
#read_worker 、 #select_server 、 #write_worker
コンストラクターの詳細
#initialize(cluster) ⇒ CursorReaper
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
カーソル リーパーを作成します。
42 43 44 45 46 47 48 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cluster/readers/cursor_reader.rb', 行42 デフォルト 初期化(クラスター) @cluster = クラスター @to_kill = {} @active_cursor_ids = セット.新着情報 @mutex = ミューテックス.新着情報 @kill_spec_queue = Queue.新着情報 end |
インスタンス属性の詳細
#クラスター=オブジェクト(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
50 51 52 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cluster/readers/cursor_reader.rb', 行50 デフォルト クラスター @cluster end |
インスタンス メソッドの詳細
# kill_cursors =オブジェクト名:実行、フラッシュ
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
保留中のすべての強制終了カーソル操作を実行します。
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cluster/readers/cursor_reader.rb', 行133 デフォルト kill_cursors # TODO は、これを最適化して、同じノードのカーソル操作をバッチ処理します 各カーソルを強制終了する代わりに、サーバー/データベース/コレクションを表示 # を個別に指定します。 ループ 行う server_address = nil kill_spec = @mutex.同期 行う read_sScheduled_kill_specs # 破棄される予定のカーソルがあるサーバーを見つけます。 server_address, specs = @to_kill.検出 { |_, specs| specs.any? } 場合 specs.nil? # すべてのサーバーは空の仕様を持ち、実行する操作はありません。 return end これにより、キュー内の仕様が変更されることに注意してください。 # 強制終了カーソル操作が失敗した場合、次の操作は実行されません は、そのカーソルを再度強制終了します。 スペック = specs.が(1).タップ 行う |アービタ| specs.減算(アービタ) end.最初に ただし、 @active_cursor_ids.include?(スペック.cursor_id) カーソルはすでに強制終了されています。通常、次の理由でです: 完了まで反復処理されました。 強制終了の仕様を から削除する 追加の作業を行わずにレコードを番号化します。 スペック = nil end スペック end 強制終了する指定があり、そのカーソルがすでに強制終了されている場合 別の仕様を検索します。 次へ ただし、 kill_spec # kill_spec を killCursor に直接渡すこともできます ただし、これにより、その操作は次のようになります ハッシュを受け入れる他のすべての API とは異なる API を使用します。 スペック = { cursor_ids: [kill_spec.cursor_id], coll_name: kill_spec.coll_name, db_name: kill_spec.db_name, } op = 操作::killCursors.新着情報(スペック) サーバー = クラスター.サーバー.検出 行う |サーバー| サーバー.address == server_address end ただし、 サーバー # TODO では、現在、 は に関連付けられています。 カーソルは のままにする必要があります。 後で(サーバーが戻ったとき)に強制終了するようにしてください。 次へ end = { server_api: サーバー.[:server_api], connection_ global_id: kill_spec.connection_ global_id, } op.実行する(サーバー, context: 操作::Context.新着情報(次のオプションがあります。 )) 場合 セッション = kill_spec.セッション 場合 セッション.implicit? セッション.end_session end end end end |
#read_sScheduled_kill_specs 詳しくは、オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
スケジュールされた強制終了カーソル操作の読み取りとデコード。
このメソッドはロックせずにインスタンス変数をミューテーションするため、スレッドセーフではありません。 通常、それ自体は呼び出されないでください。これは 'kill_cursor' メソッドのヘルパーです。
114 115 116 117 118 119 120 121 122 123 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cluster/readers/cursor_reader.rb', 行114 デフォルト read_sScheduled_kill_specs 一方 kill_spec = @kill_spec_queue.ポップ(true) 場合 @active_cursor_ids.include?(kill_spec.cursor_id) @to_kill[kill_spec.server_address] ||= セット.新着情報 @to_kill[kill_spec.server_address] < kill_spec end end ヘルプ ThreadError # 空のキュー。何もすることがありません。 end |
# register_cursor ( ID ) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
カーソル ID をアクティブとして登録します。
71 72 73 74 75 76 77 78 79 80 81 82 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cluster/readers/cursor_reader.rb', 行71 デフォルト register_cursor(id) 場合 id.nil? 発生 ArgumentError, : nil cursor_id を使用して呼び出された register_cursor : end 場合 id == 0 発生 ArgumentError, cursor_id = 0で呼び出される Register_cursorの end @mutex.同期 行う @active_cursor_ids < id end end |
# schedule_kill_cursor (kill_spec) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
強制終了カーソル操作を最終的に実行するようにスケジュールします。
57 58 59 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cluster/readers/cursor_reader.rb', 行57 デフォルト schedule_kill_cursor(kill_spec) @kill_spec_queue < kill_spec end |
#unregister_cursor(id) ⇒ Object
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
カーソル ID の登録を解除し、アクティブでなくなったことを示します。
94 95 96 97 98 99 100 101 102 103 104 105 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cluster/readers/cursor_reader.rb', 行94 デフォルト unregister_cursor(id) 場合 id.nil? 発生 ArgumentError, : nil cursor_id を使用して呼び出された unregister_cursor : end 場合 id == 0 発生 ArgumentError, ' cursor_id= 0で呼び出される unreg Register_cursor ' end @mutex.同期 行う @active_cursor_ids.削除(id) end end |