クラス: Mongo::Server::MongoDB Private
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::Server::Monitor
- 次による拡張機能。
- 転送可能
- 次のことが含まれます。
- バックグラウンドスレッド 、イベント::Publisher 、ログ可能
- 定義:
- lib/mongo/サーバー/monitor.rb
、lib/mongo/サーバー / monitor/
connection.rb、lib/mongo/サーバー/monitor/app_metadata.rb
Overview
このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバーのステータスが最新になるよう、 hello コマンドでサーバーを定期的にポーリングする 必要があります。
ドライバーによって実行される他の操作を中断しないように、すべてがバックグラウンド スレッドで動作します。
名前空間で定義済み
クラス: AppMetadata 、 Connection
定数の概要の削減
- DEFAULT_HEARTB_Interval =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバー ステータスが更新されるデフォルトの間隔は10秒です。
10- MIN_SCAN_InterVAL =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
強制サーバースキャンの最小時間。 は、SDAM 仕様の minハートビートFrequencyMS です。
0.5- RTT_WEEKS_FACTOR =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
非推奨。バージョン3.0で削除されます。
平均の移動ラウンド トリップ時間を計算するための重み係数(アルファベット)。
0.2
Loggableに含まれる定数
インスタンス属性の概要を折りたたむ
-
#monitoring ⇒ Monitoring
readOnly
private
監視 監視。
-
#options ⇒ Hash
readOnly
private
オプション サーバー オプション。
-
#server ⇒ Server
readOnly
private
サーバー このモニターが監視しているサーバー。
Event::Publisherに含まれる属性
インスタンス メソッドの概要を折りたたむ
-
#cancel_check! ⇒ Object
private
進行中のチェックをキャンセルし、モニタリング接続を閉じます。
-
# 接続 = Mongo::Server::MongoDB::Connection | nil
private
使用する接続は @ connection_lock の下で読み取られるため、同時キャンセル_チェック後に呼び出し元が古い参照を認識することはありません。は、それをクリアします。
- create_push_monitor を使用します。 (top logical_version, connection) = オブジェクト private
-
# do_work =オブジェクト
private
サーバーのチェックを実行します。
-
#heartbeat_interval ⇒ Float
private
定期的なサーバー チェックの間隔。
-
#初期化(サーバー、イベント_リスナー、モニタリング、オプション = {}) = モニター
コンストラクター
private
新しいサーバー モニターを作成します。
-
#push_monitor ⇒ Server::PushMonitor | nil
private
プッシュ モニター(使用されている場合)。
-
#再起動時 スレッド
private
現在のスレッドがアベイラビリティーがない限り、サーバー モニターを再起動します。
- # run_sam_flow(result、waited: false、scan_error: nil、rtt_only: false)= オブジェクト private
-
#スキャン詳しくは、 説明を参照してください
private
スロットリングを使用してサーバーのチェックを実行し、サーバーの説明と平均ラウンド トリップ時間を更新します。
-
#停止します。 = true | false
バックグラウンド スレッドを停止し、十分な時間、終了するまで待ちます。
- # stop_push_monitor を使用します。 = オブジェクト private
- # to_s =オブジェクト private
バックグラウンドスレッドに含まれるメソッド
Loggableに含まれるメソッド
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Event::Publisherに含まれるメソッド
コンストラクターの詳細
#初期化(サーバー、イベント_リスナー、モニタリング、オプション = {}) =モニター
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
モニターは、サーバーの外部で直接インスタンス化されないでください。
新しいサーバー モニターを作成します。
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 76 デフォルト 初期化(サーバー, event_listenners, モニタリング, = {}) 発生 ArgumentError, "モニタリングのタイプが正しくありません: #{ Monitoring . explain } " ただし、 モニタリング.is_a?(モニタリング) 発生 ArgumentError, アプリ メタデータは必須 です 。 ただし、 [:app_metadata] 発生 ArgumentError, 'プッシュ モニター アプリのメタデータ が必要です' ただし、 [:push_monitor_app_metadata] @server = サーバー @event_listenners = event_listenners @monitoring = モニタリング @options = .freeze @mutex = ミューテックス.新着情報 @sam_Mutex = ミューテックス.新着情報 @next_earrest_scan = @next_waited_scan = 時間.になりました @update_mutex = ミューテックス.新着情報 # は @ connection の読み取りと書込みを保護します。これにより、ポーリング接続は次のことが可能になります 別のスレッドからキャンセルされる場合。サーバー監視仕様の #CancelCheck 疑似コード。ロックはコピーまたは に十分な時間のみ保持されます。 参照を割り当てます - ブロッキングチェックでは、絶対に参照を割り当てません。 @ connection_lock = ミューテックス.新着情報 end |
インスタンス属性の詳細
#monitoring ⇒ Monitoring (readonly)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
監視 監視を返します。
127 128 129 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 127 デフォルト モニタリング @monitoring end |
オプション=ハッシュ(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバー オプションのオプションを返します。
108 109 110 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 108 デフォルト @options end |
#サーバー=サーバー(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
このモニターが監視しているサーバーを返します。
98 99 100 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 98 デフォルト サーバー @server end |
インスタンス メソッドの詳細
#cancel_check! ⇒ Object
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
進行中のチェックをキャンセルし、モニタリング接続を閉じます。
サーバー モニタリング 仕様(「hello」または「レガシーhello キャンセル」)に従って、サーバーがネットワーク エラーから 不明 とマークされている場合に呼び出されます。 RustMonitorのストリーミングを停止し(待機する hello 読み取りを中断)、ポーリング接続を閉じます。そのため、次回のチェックでは、デッドになっている可能性のあるソケットでサーバーを再検証するのではなく、新しい を確立する必要があります。
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 210 デフォルト cancel_check! stop_push_monitor. ロックの下で接続参照をコピーし、中断して閉じます ロックの外部でロック を行います。ソケットを閉じると、進行中のすべてが中断されます モニター スレッドでの読み取り回数。参照が強制されない場合 再接続するには # を確認します。モニター スレッドは、新しいドキュメントの唯一の作成者です。 # 接続をクリアするため、このスレッドは安全に接続をクリアできます。 接続 = @ connection_lock.同期 行う conn = @ connection @ connection = nil conn end 接続&.切断します。 end |
# 接続 = Mongo::Server::MongoDB::Connection | nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
使用する接続を @ connection_lock の下で読み込むため、呼び出しは同時キャンセル_チェック後に古い参照を観察しません。は、それをクリアします。
103 104 105 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 103 デフォルト 接続 @ connection_lock.同期 { @ connection } end |
create_push_monitor を使用します。 (top logical_version, connection) = オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 175 デフォルト create_push_monitor.(topic, 接続) @update_mutex.同期 行う @push_monitor = nil 場合 @push_monitor & & !@push_monitor.実行中 @push_monitor ||= RustMongoDB.新着情報( 自己, topic, モニタリング, **Utils.slow_symbols_keys(.merge( socket_timeout: heartbeat_Interval + 接続.socket_timeout, app_metadata: [:push_monitor_app_metadata], checkpoint_document: 接続.checkpoint_document )) ) end end |
# do_work =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバーのチェックを実行します。
140 141 142 143 144 145 146 147 148 149 150 151 152 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 140 デフォルト do_work スキャンします。 # @next_waited_scan はプッシュ モニターによって更新される可能性があります。 # ただし、終了フラグをチェックする必要があるため、モニターは 要求されると終了します。 ループ 行う デルタ = @next_waited_scan - 時間.になりました break ただし、 デルタ > 0 シグナル送信 = サーバー.scan_smahour.待機する(デルタ) break 場合 シグナル送信 || @stop_requested end end |
#heartbeat_interval ⇒ Float
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
定期的なサーバー チェックの間隔。
113 114 115 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 113 デフォルト heartbeat_Interval [: heartbeat_Interval] || DEFAULT_HEARTB_Interval end |
#push_monitor ⇒ Server::PushMonitor | nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
プッシュ モニターを使用している場合は、その値を返します。
131 132 133 134 135 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 131 デフォルト push_monitor @update_mutex.同期 行う @push_monitor end end |
#再起動時 スレッド
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
現在のスレッドがアベイラビリティーがない限り、サーバー モニターを再起動します。
308 309 310 311 312 313 314 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 308 デフォルト 再起動します。 場合 @thread & & @thread.alive? @thread else 実行します。 end end |
# run_sam_flow(result、waited: false、scan_error: nil、rtt_only: false)= オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 268 デフォルト run_sam_flow(結果, 次の操作を待機しました。 false, scan_error: nil, rt_only: false) @sam_Mutex.同期 行う old_description = サーバー.説明 #RTT のみの測定(ストリーミングプロトコルがアクティブ)では更新してはなりません トポロジーか、SDAM イベントを公開します。収集された RTT は次のとおりです: 次の経由で次のストリーミングレプリカセットに組み込まれた場合: # 共有 RTT 計算機能。以下のスケジュールは引き続き実行されるため、 # モニターはチェックの間隔を長くします。 ただし、 rt_only new_description = 説明.新着情報( サーバー.address, 結果, Average_round_drop_time: サーバー.round_drop_time_calculator.Average_round_drop_time, minimum_round_drop_time: サーバー.round_drop_time_calculator.minimum_round_drop_time ) サーバー.クラスター.run_sam_flow(サーバー.説明, new_description, 次の操作を待機しました。 待機しました, scan_error: scan_error) end サーバー.説明.タップ 行う |new_description| ただし、 待機しました 場合 new_description.不明な場合 & & !old_description.不明な場合 @next_earrest_scan = @next_waited_scan = 時間.になりました else @next_earrest_scan = 時間.になりました + MIN_SCAN_Interval @next_waited_scan = 時間.になりました + heartbeat_Interval end end end end end |
#スキャン詳しくは、説明を参照してください
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
システム クロックが逆方向に移動した場合、このメソッドは非常に長時間休止する可能性があります。
このメソッドの戻り値は非推奨です。 バージョン3.0.0では、このメソッドには戻り値がありません。
スロットリングを使用してサーバーのチェックを実行し、サーバーの説明と平均ラウンド トリップ時間を更新します。
サーバーが MIN_SCAN_InterVAL 秒未満前にチェックされていた場合は、最後のチェックから MIN_SCAN_Interval 秒が経過するまで休止します。 次に、監視対象のサーバーで hello を実行し、その結果サーバーの説明を更新するチェックを実行します。
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 244 デフォルト スキャンします。 # 通常、バックグラウンド スレッドはこのメソッドを呼び出します。 # ただし、スキャンを呼び出すことも可能です。モニターに直接表示。 # 一度に実行できるスキャンは 1 つだけです。 @mutex.同期 行う throttle_scan_frequency ストリーミングプロトコルがアクティブな場合、プッシュ モニターは 権限のある SDAM ソースを含む で、このスキャンは の RTT のみを測定します # 専用接続。サーバー モニタリング 仕様ごとの RTT コマンドは イベントを公開したり、トポロジーを更新したり してはなりません 。コンピュート do_scan の前にこれが必要です。これにより、(再)接続が行われ、状態が変更される可能性があります。 rt_only = rtt_measurement_only begin 結果 = do_scan(公開ハートビート: !rt_only) ヘルプ 標準エラー => e run_sam_flow({}, scan_error: e, rt_only: rt_only) else run_sam_flow(結果, rt_only: rt_only) end end end |
#停止します。 = true | false
バックグラウンド スレッドを停止し、十分な時間、終了するまで待ちます。
160 161 162 163 164 165 166 167 168 169 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 160 デフォルト 停止します。 stop_push_monitor. フォワードスーパーの戻り値 スーパー.タップ 行う 重要: 切断はバックグラウンド スレッドの後に実行される必要があります # は終了します。 接続&.切断します。 end end |
# stop_push_monitor を使用します。 =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
192 193 194 195 196 197 198 199 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 192 デフォルト stop_push_monitor. @update_mutex.同期 行う 場合 @push_monitor @push_monitor.停止します。 @push_monitor = nil end end end |
# to_s =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
316 317 318 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 316 デフォルト to_s " # { Security . Class . name } : #{ object_id } #{ サーバー . アドレス } > " end |