クラス: Mongo::Server::MongoDB Private

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
次のことが含まれます。
バックグラウンドスレッド 、イベント::Publisherログ可能
定義:
lib/mongo/サーバー/monitor.rb
、lib/mongo/サーバー / monitor/
connection.rb、lib/mongo/サーバー/monitor/app_metadata.rb

Overview

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

サーバーのステータスが最新になるよう、 hello コマンドでサーバーを定期的にポーリングする 必要があります。

ドライバーによって実行される他の操作を中断しないように、すべてがバックグラウンド スレッドで動作します。

以来

  • 2.0.0

名前空間で定義済み

クラス: AppMetadataConnection

定数の概要の削減

DEFAULT_HEARTB_Interval =

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

サーバー ステータスが更新されるデフォルトの間隔は10秒です。

以来

  • 2.0.0

10.freeze
MIN_SCAN_InterVAL =

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

強制サーバースキャンの最小時間。 は、SDAM 仕様の minハートビートFrequencyMS です。

以来

  • 2.0.0

0.5.freeze
RTT_WEEKS_FACTOR =

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

非推奨。

バージョン3.0で削除されます。

平均の移動ラウンド トリップ時間を計算するための重み係数(アルファベット)。

以来

  • 2.0.0

0.2.freeze

Loggableに含まれる定数

ログ可能::PRFIX

インスタンス属性の概要を折りたたむ

Event::Publisherに含まれる属性

#event_listeners

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

バックグラウンドスレッドに含まれるメソッド

# を実行します。は、 を実行しますか。

Loggableに含まれるメソッド

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

Event::Publisherに含まれるメソッド

#push

コンストラクターの詳細

#初期化(サーバー、イベント_リスナー、モニタリング、オプション = {}) =モニター

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

注:

モニターは、サーバーの外部で直接インスタンス化されないでください。

新しいサーバー モニターを作成します。

例:

サーバー モニターを作成します。

Mongo::Server::Monitor.new(address, listeners, monitoring)

パラメーター:

  • サーバー サーバー

    監視するサーバー。

  • event_listenners イベント::リスナー

    イベント リスナー。

  • モニタリング 監視

    モニタリング

  • options ハッシュ (デフォルトは{}です)

    オプション。

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

  • :connect_timeout 浮動小数

    監視接続を確立するときに使用するタイムアウト(秒単位)。

  • : heartbeat_Interval 浮動小数

    定期的なサーバー チェックの間隔。

  • :logger ロガー

    使用するカスタム ロガー。

  • :monitor_app_metadata Mongo::Server::MongoDB::AppMetadata

    定期的な接続を監視するために使用するメタデータ。

  • :push_monitor_app_metadata Mongo::Server::MongoDB::AppMetadata

    プッシュ モニターの接続に使用するメタデータ。

  • :socket_timeout 浮動小数

    監視接続で操作を実行するためのタイムアウト(秒単位)。

以来

  • 2.0.0



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 78

デフォルト 初期化(サーバー, event_listenners, モニタリング, options = {})
  ただし、 モニタリング.is_a?(モニタリング)
    発生 ArgumentError, "モニタリングのタイプが正しくありません: #{ Monitoring . explain } "
  end
  ただし、 options[:app_metadata]
    発生 ArgumentError, アプリ メタデータは必須 です
  end
  ただし、 options[:push_monitor_app_metadata]
    発生 ArgumentError, 'プッシュ モニター アプリのメタデータ が必要です'
  end
  @server = サーバー
  @event_listenners = event_listenners
  @monitoring = モニタリング
  @options = options.freeze
  @mutex = ミューテックス.新着情報
  @sam_Mutex = ミューテックス.新着情報
  @next_earrest_scan = @next_waited_scan = 時間.になりました
  @update_mutex = ミューテックス.新着情報
end

インスタンス属性の詳細

#接続= Mongo::Server::MongoDB::Connection (readonly)

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

接続を返します 使用する接続を返します。

次の値を返します。

以来

  • 2.0.0



103
104
105
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 103

デフォルト 接続
  @ connection
end

#monitoringMonitoring (readonly)

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

監視 監視を返します。

次の値を返します。

  • 監視

    監視 監視。

以来

  • 2.0.0



125
126
127
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 125

デフォルト モニタリング
  @monitoring
end

オプション=ハッシュ(読み取り専用)

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

サーバー オプションのオプションを返します。

次の値を返します。

  • ハッシュ

    options サーバー オプション。

以来

  • 2.0.0



106
107
108
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 106

デフォルト options
  @options
end

#サーバー=サーバー(読み取り専用)

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

このモニターが監視しているサーバーを返します。

次の値を返します。

  • サーバー

    server このモニターが監視しているサーバー。

以来

  • 2.0.0



100
101
102
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 100

デフォルト サーバー
  @server
end

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

create_push_monitor を使用します。 (top logical_version) =オブジェクト

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

以来

  • 2.0.0



173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 173

デフォルト create_push_monitor.(topic)
  @update_mutex.同期 行う
    場合 @push_monitor & & !@push_monitor.実行中
      @push_monitor = nil
    end

    @push_monitor ||= RustMongoDB.新着情報(
      自己,
      topic,
      モニタリング,
      **Utils.slow_symbols_keys(options.merge(
        socket_timeout: heartbeat_Interval + 接続.socket_timeout,
        app_metadata: options[:push_monitor_app_metadata],
        checkpoint_document: @ connection.checkpoint_document
      )),
    )
  end
end

# do_work =オブジェクト

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

サーバーのチェックを実行します。

以来

  • 2.0.0



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 138

デフォルト do_work
  スキャンします。
  # @next_waited_scan はプッシュ モニターによって更新される可能性があります。
  # ただし、終了フラグをチェックする必要があるため、モニターは
  要求されると終了します。
  ループ 行う
    デルタ = @next_waited_scan - 時間.になりました
    場合 デルタ > 0
      シグナル送信 = サーバー.scan_smahour.待機する(デルタ)
      場合 シグナル送信 || @stop_requested
        break
      end
    else
      break
    end
  end
end

#heartbeat_intervalFloat

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

定期的なサーバー チェックの間隔。

次の値を返します。

  • 浮動小数

    ハートビートの間隔(秒単位)。

以来

  • 2.0.0



111
112
113
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 111

デフォルト heartbeat_Interval
  options[: heartbeat_Interval] || DEFAULT_HEARTB_Interval
end

#push_monitorServer::PushMonitor | nil

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

プッシュ モニターを使用している場合は、その値を返します。

次の値を返します。

  • Server ::PushMonitor | nil

    プッシュ モニター(使用されている場合)。

以来

  • 2.0.0



129
130
131
132
133
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 129

デフォルト push_monitor
  @update_mutex.同期 行う
    @push_monitor
  end
end

#再起動時 スレッド

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

現在のスレッドがアベイラビリティーがない限り、サーバー モニターを再起動します。

例:

モニターを再起動します。

monitor.restart!

次の値を返します。

  • スレッド

    モニターが実行されるスレッド。

以来

  • 2.1.0



270
271
272
273
274
275
276
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 270

デフォルト 再起動します。
  場合 @thread & & @thread.alive?
    @thread
  else
    実行します。
  end
end

# run_sam_flow (result、waited: false、scan_error: nil) =オブジェクト

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

以来

  • 2.0.0



236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 236

デフォルト run_sam_flow(結果, 次の操作を待機しました。 false, scan_error: nil)
  @sam_Mutex.同期 行う
    old_description = サーバー.説明

    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)

    サーバー.説明.タップ 行う |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 を実行し、その結果サーバーの説明を更新するチェックを実行します。

次の値を返します。

  • 説明

    更新された説明。

以来

  • 2.0.0



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 219

デフォルト スキャンします。
  # 通常、バックグラウンド スレッドはこのメソッドを呼び出します。
  # ただし、スキャンを呼び出すことも可能です。モニターに直接表示。
  # 一度に実行できるスキャンは 1 つだけです。
  @mutex.同期 行う
    throttle_scan_frequency

    begin
      結果 = do_scan
    ヘルプ => e
      run_sam_flow({}, scan_error: e)
    else
      run_sam_flow(結果)
    end
  end
end

#停止します。 = true | false

バックグラウンド スレッドを停止し、十分な時間、終了するまで待ちます。

次の値を返します。

  • true | false

    スレッドが終了されたかどうか。

以来

  • 2.0.0



162
163
164
165
166
167
168
169
170
171
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 162

デフォルト 停止します。
  stop_push_monitor.

  フォワードスーパーの戻り値
  スーパー.タップ 行う
    重要: 切断はバックグラウンド スレッドの後に実行される必要があります
    # は終了します。
    接続&.切断します。
  end
end

# stop_push_monitor を使用します。 =オブジェクト

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

以来

  • 2.0.0



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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

以来

  • 2.0.0



278
279
280
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 278

デフォルト to_s
  " # { Security . Class . name } : #{ object_id } #{ サーバー . アドレス } > "
end