クラス: Mongo::Server

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
次のことが含まれます。
イベント::PublisherMongoDB ::公開可能
定義:
lib/mongo/サーバー.rb
、lib/mongo/サーバー/monitor.rb、lib/mongo/サーバー/


connection.rb、lib/mongo/サーバー/description.rb、lib/mongo/サーバー/app_metadata.rb、lib/



mongo/サーバー/push_monitor.rb、lib/mongo/サーバー/ connection_base.rb、lib/mongo/サーバー/ connection_Pool.rb、lib/mongo/サーバー/ connection_
Common.rb、lib/mongo/サーバー/monitor/ connection.rb、
lib/mongo/サーバー/pending_ connection.rb、lib/mongo/サーバー/description/features.rb、lib/mongo/サーバー/monitor/app_metadata.rb、lib/mongo/サーバー/app_metadata/プラットフォーム.rb、lib/mongo/



サーバー/app_metadata/truncator.rb、lib/mongo/サーバー/push_monitor/
connection.rb、lib/mongo/サーバー/app_metadata/environment.rb、lib/mongo/サーバー/



connection_Pool/populator.rb、lib/mongo/サーバー/ explain/load_ balancer.rb,
lib/mongo/サーバー/ round_drop_time_calcなく

Overview

スタンドアロン、レプリカセットの一部、または mongos にすることができるサーバー側の単一のサーバーを表します。

以来

  • 2.0.0

名前空間で定義済み

クラス: AppMetadata Connection ConnectionBase ConnectionCommon ConnectionPool Description trigger 、 PendingConnection 、pusMonitor 、RoundTryTimeCollectioner

定数の概要の削減

CONNECT_TIMEOUT =

接続試行のタイムアウトのデフォルト時間(秒単位)。

以来

  • 2.4.3

10

Loggableに含まれる定数

ログ可能::PRFIX

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

Event::Publisherに含まれる属性

#event_listeners

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

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

#push

から含まれるメソッド::public

#publish_cmap_event#publish_event#publish_sam_event

Loggableに含まれるメソッド

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

コンストラクターの詳細

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

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

注:

サーバーは、クラスターの外部で直接インスタンス化されることは ありません 。

新しいサーバー オブジェクトをインスタンス化します。 バックグラウンド更新を開始し、適切なイベントにサブスクライブします。

例:

サーバーを初期化します。

Mongo::Server.new('127.0.0.1:27017', cluster, monitoring, listeners)

パラメーター:

  • address アドレス

    接続するホストとポートのアドレス。

  • クラスター クラスター

    サーバーが属するクラスター。

  • モニタリング 監視

    の監視。

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

    イベント リスナー。

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

    サーバー オプション。

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

  • :mongos ブール値

    内部ドライバーのみで使用します: サーバーをインスタンス化した後に監視するかどうか。

  • :monitoring_io truefalse

    内部ドライバーのみを使用します。 このサーバーによって SDAM 関連の I/O が実行されないようにするには、 false に設定します。 注: このオプションを false に設定すると、サーバーは機能しなくなります。 SDAM 状態移行を手動で呼び出すテストでの使用を目的としています。

  • :populator_io truefalse

    内部ドライバーのみを使用します。サーバーの接続プールで入力スレッドが作成および開始されないようにするには、 false に設定します。これは、ポインターが明示的に必要な場合を除き、mongoDB_io もオフにするテストでの使用を目的としています。MongoDB_io がオフであるが、popupulator_io がオンの場合、テストの最後にポインターを手動で閉じる必要があります。これは、モニタリングのないクラスターは接続されていないと見なされ、閉じたときに接続プールの入力値をクリーンアップしないためです。

  • :load_ balancer true | false

    このサーバーがロード バランサーであるかどうか。

  • :connect string

    クライアント接続モード

以来

  • 2.0.0



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# ファイル 'lib/mongo/ サーバー.rb', 行 69

デフォルト 初期化(address, クラスター, モニタリング, event_listenners, options = {})
  @address = address
  @cluster = クラスター
  @monitoring = モニタリング
  options = options.dup
  _monitor = options.削除(:mongos)
  @options = options.freeze
  @event_listenners = event_listenners
  @ connection_id_gen = クラス.新着情報 行う
    次を含みます: id
  end
  @scan_smahour = DistinguishedSemahour.新着情報
  @round_drop_time_calculator = Double.新着情報
  @description = 説明.新着情報(address, {},
                                 load_Balancer: !!@options[:load_ balancer],
                                 force_load_Balancer: force_load_Balancer?)
  @last_scan = nil
  @last_scan_mongotime = nil
  ただし、 options[:monitoring_io] == false
    @monitor = モニター.新着情報(自己, event_listenners, モニタリング,
                           options.merge(
                             app_metadata: クラスター.,
                             push_monitor_app_metadata: クラスター.,
                             heartbeat_Interval: クラスター.heartbeat_Interval
                           ))
    start_monitoring ただし、 _monitor == false
  end
  @connected = true
  @Pool_lock = ミューテックス.新着情報
end

インスタンス属性の詳細

# address = string (読み取り専用)

サーバーの構成されたアドレスを返します。

次の値を返します。

  • ( string )

    サーバーの構成されたアドレス。

以来

  • 2.0.0



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

デフォルト address
  @address
end

クラスター(読み取り専用)

クラスター サーバー クラスターを返します。

次の値を返します。

以来

  • 2.0.0



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

デフォルト クラスター
  @cluster
end

# Description = Server:: Description (readonly)

Returns Description モニターが更新するサーバーの説明を返します。

次の値を返します。

以来

  • 2.0.0



118
119
120
# ファイル 'lib/mongo/ サーバー.rb', 行 118

デフォルト 説明
  @description
end

#モニター= nil |モニター(読み取り専用)

サーバーモニターを返します。サーバーがMongoDB_io: false オプションで作成されている場合は nil 。

次の値を返します。

  • nil |モニター

    サーバーモニターを監視します。サーバーがMongoDB_io: false オプションで作成されている場合は nil 。

以来

  • 2.0.0



108
109
110
# ファイル 'lib/mongo/ サーバー.rb', 行 108

デフォルト モニター
  @monitor
end

#monitoringMonitoring (readonly)

監視 監視を返します。

次の値を返します。

  • 監視

    監視 監視。

以来

  • 2.0.0



114
115
116
# ファイル 'lib/mongo/ サーバー.rb', 行 114

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

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

オプション ハッシュを返します。

次の値を返します。

  • ハッシュ

    オプションは ハッシュです。

以来

  • 2.0.0



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

デフォルト options
  @options
end

#round_ ユーザーの選択

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

ラウンド トリップ時間計算子オブジェクトを返します。

次の値を返します。

以来

  • 2.0.0



227
228
229
# ファイル 'lib/mongo/ サーバー.rb', 行 227

デフォルト round_drop_time_calculator
  @round_drop_time_calculator
end

# scan_smahour (読み取り専用) →セマフォア(readonly)

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

サーバーが実行中の場合は、モニターによるこのサーバーの即座のスキャンを要求するようシグナルにセカンダリを返します。

次の値を返します。

  • セマフォア

    サーバーが実行中の場合は、モニターによるこのサーバーの即座のスキャンを要求するようにシグナルが送信されます。

以来

  • 2.0.0



223
224
225
# ファイル 'lib/mongo/ サーバー.rb', 行 223

デフォルト scan_smahour
  @scan_smahour
end

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

# == (その他) === (その他) ==================================================================================

このサーバーは別のサーバーと等しいか?

例:

サーバーは他のサーバーと等しいか?

server == other

パラメーター:

  • その他 オブジェクト

    比較するオブジェクト。

次の値を返します。

  • truefalse

    サーバーが等しい場合。

以来

  • 2.0.0



239
240
241
242
243
# ファイル 'lib/mongo/ サーバー.rb', 行 239

デフォルト ==(その他)
  return false ただし、 その他.is_a?(サーバー)

  address == その他.address
end

#クリア_接続_プール (service_id: nil、割り込み_in_use_ connections : false) =オブジェクト

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

パラメーター:

  • :service_id オブジェクト

    指定されたサービス ID のみの接続を閉じます。

  • :中断_in_use_ connections true | false

    クリアされた接続も中断するかどうか。

以来

  • 2.0.0



642
643
644
645
646
647
648
649
650
651
652
# ファイル 'lib/mongo/ サーバー.rb', 行 642

デフォルト クリア_接続_プール(service_id: nil, insert_in_use_ connections: false)
  @Pool_lock.同期 行う
    # 閉じた後に不明としてマークされているサーバーは、技術的に
    # は誤りですが、状態は意味的に変更されません。
    # ドライバーは歴史的にサーバーをマークすることを許可していた
    いつでも不明な場合は、プールが閉じられた場合でも同じ操作を続行します。
    場合 @Pool & & !@Pool.閉じましたか
      @Pool.切断します。(service_id: service_id, insert_in_use_ connections: insert_in_use_ connections)
    end
  end
end

# clear_description =オブジェクト

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

サーバーの説明をクリアして、不明と見なし、安全に切断できるようにします。

以来

  • 2.0.0



632
633
634
# ファイル 'lib/mongo/ サーバー.rb', 行 632

デフォルト clear_description
  @description = mongo::サーバー::説明.新着情報(address, {})
end

# close =オブジェクト

以来

  • 2.0.0



287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
# ファイル 'lib/mongo/ サーバー.rb', 行 287

デフォルト 閉じる
  モニター.停止します。 場合 モニター

  @connected = false

  _Pool = nil
  @Pool_lock.同期 行う
    _Pool, @Pool = @Pool, nil
  end

  # TODO: これを Ruby- 3174の _Pool.close に変更します。
  # プールをクリアします。 サーバーが不明でない場合、
  # プールは準備ができたままになります。 バックグラウンド 入力 スレッドを停止します。
  _Pool&.閉じる(retain_ready: true)

  nil
end

#compressorString | nil

非推奨。
注:

圧縮は、接続ごとに個別にネゴシエートされます。

コンプレッサーがサーバー モニターによってネゴシエートされた場合(存在する場合)、

この属性は、サーバーチェックがまだ完了していない場合、および圧縮がネゴシエートされていない場合は nil です。

次の値を返します。

  • ( string | nil )

    ネゴシエートされたコンプレッサー。

以来

  • 2.0.0



175
176
177
178
179
# ファイル 'lib/mongo/ サーバー.rb', 行 175

デフォルト compressor
  return ただし、 モニター

  モニター.compressor
end

#接続可能かどうか = truefalse

非推奨。

サーバー選択の仕様が不要になりました。

サーバーへの接続を確立でき、メッセージを送信できるかどうかを判断します。

例:

サーバーは接続可能かどうか。

server.connectable?

次の値を返します。

  • truefalse

    サーバーが接続可能な場合。

以来

  • 2.1.0



256
# ファイル 'lib/mongo/ サーバー.rb', 行 256

デフォルト 接続可能かどうか; end

#接続済みかどうか= true|false

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

サーバーが接続されているかどうか。

次の値を返します。

  • true|false

    サーバーが接続されているかどうか。

以来

  • 2.7.0



311
312
313
# ファイル 'lib/mongo/ サーバー.rb', 行 311

デフォルト 接続されていますか?
  @connected
end

#切断します。 = true

このサーバーからドライバーを切断します。

接続プール内のこのサーバーへのすべてのアイドル接続を切断します(存在する場合)。が実行中いる場合は、接続プールの入力を停止します。現在チェックアウトされている(つまり、使用中)の接続をすぐに閉じません。このような接続は、それぞれの接続プールに返されると閉じられます。サーバーのバックグラウンド モニターを停止します。

次の値を返します。

  • ( true )

    常に true

以来

  • 2.0.0



270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# ファイル 'lib/mongo/ サーバー.rb', 行 270

デフォルト 切断します。
  モニター.停止します。 場合 モニター

  @connected = false

  #現在の CMAP 仕様では、プールがほとんど使用できない必要があります
  : サーバーが不明な場合(または切断されている場合)。
  # ただし、未処理の操作は引き続き完了する必要があります。
  # とその接続は、次のようにプールにチェックインする必要があります
  アプリケーションは必要ありません。 このクリーンアップ要件により、次はできません:
  プールを閉じて、ここで nil に設定します。これは次に再作成されます
  サーバーが検出された時間。
  pool_internal&.クリア

  true
end

force_load_ balancer は? = true | false

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

このサーバーが強制的にロード バランサーであるかどうかを返します。

次の値を返します。

  • true | false

    このサーバーが強制的にロード バランサーであるかどうか。

以来

  • 2.0.0



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

デフォルト force_load_Balancer?
  options[:connect] == :load_ ユーザー分散
end

#hand_auth_failure。 =オブジェクト

認証失敗の処理。

例:

認証が失敗する可能性を処理します。

server.handle_auth_failure! do
  Auth.get(user).(self)
end

次の値を返します。

  • オブジェクト

    ブロック実行の結果。

次の値が発生します。

以来

  • 2.3.0



510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
# ファイル 'lib/mongo/ サーバー.rb', 行 510

デフォルト pipeline_auth_failure.
  ノードの数
ヘルプ mongo::エラー::SocketTimeoutError
  # クラスターは遅い可能性があるため、中断しないでください
  発生
ヘルプ mongo::エラー::SocketError, 認証::許可されていない => e
  # 非タイムアウト ネットワーク エラーまたは 認証エラーの場合は、プールをクリアして をマークします
  # トポロジーは不明です
  不明です。(
    生成: e.生成,
    service_id: e.service_id,
    stop_push_monitor: true
  )
  発生
end

#handstake_failure。 =オブジェクト

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

ハンドシェイクの失敗を処理します。

以来

  • 2.7.0



485
486
487
488
489
490
491
492
493
494
495
496
# ファイル 'lib/mongo/ サーバー.rb', 行 485

デフォルト handschema_failure.
  ノードの数
ヘルプ mongo::エラー::SocketError, mongo::エラー::SocketTimeoutError => e
  ただし、 e.ラベル('SystemOverloadedError')
    不明です。(
      生成: e.生成,
      service_id: e.service_id,
      stop_push_monitor: true
    )
  end
  発生
end

# heartbeat_frequency =オブジェクト別名: heartbeat_frequency_seconds

非推奨。

以来

  • 2.0.0



153
154
155
# ファイル 'lib/mongo/ サーバー.rb', 行 153

デフォルト heartbeat_frequency
  クラスター.heartbeat_Interval
end

詳しくは、 を 検査しstring ます

サーバー検査の結果がかなり出力されるようになりました。

例:

サーバー検査を取得します。

server.inspect

次の値を返します。

  • ( string )

    適切な検査string 。

以来

  • 2.0.0



346
347
348
# ファイル 'lib/mongo/ サーバー.rb', 行 346

デフォルト 検査する
  " #< Mongo::Server:0 x #{ object_id } address = { address .host } } : # {dress .port } } #{ status } > "
end

# last_scan =時間 | nil

last_scan サーバースキャンが最後に完了した時刻を返します。サーバーがまだスキャンされていない場合は nil を返します。

次の値を返します。

  • 時間 | nil

    last_scan サーバーが最後にスキャンされた時刻です。サーバーがまだスキャンされていない場合は nil です。

以来

  • 2.4.0



133
134
135
136
137
138
139
# ファイル 'lib/mongo/ サーバー.rb', 行 133

デフォルト last_scan
  場合 説明 & & !説明.config.空の場合
    説明.last_update_time
  else
    @last_scan
  end
end

# last_scan_mongotime =浮動小数点数 | nil

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

last_scan_mongotime が最後にサーバースキャンで完了した単調な時間を返します。サーバーがまだスキャンされていない場合は nil を返します。

次の値を返します。

  • (Float | nil)

    last_scan_mongotime サーバースキャンが最後に完了した単調な時間で、サーバーがまだスキャンされていない場合は nil です。

以来

  • 2.0.0



144
145
146
147
148
149
150
# ファイル 'lib/mongo/ サーバー.rb', 行 144

デフォルト last_scan_mongotime
  場合 説明 & & !説明.config.空の場合
    説明.last_update_monotime
  else
    @last_scan_mongotime
  end
end

#matches_tag_set?(tag_set) ⇒ true, false

提供された タグ がサーバーの タグのサブセット であるかどうかを判断します。

例:

提供されたタグが、サーバーの タグのサブセットであるかどうか。

server.matches_tag_set?({ 'rack' => 'a', 'dc' => 'nyc' })

パラメーター:

  • tag_set ハッシュ

    サーバーの タグと比較するタグセット。

次の値を返します。

  • truefalse

    提供された タグ がサーバーの タグのサブセット である場合。

以来

  • 2.0.0



443
444
445
446
447
# ファイル 'lib/mongo/ サーバー.rb', 行 443

デフォルト matches_tag_set?(tag_set)
  tag_set.キー.すべて? 行う |k|
    tags[k] & & tags[k] == tag_set[k]
  end
end

#next_ connection_id =オブジェクト

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

以来

  • 2.0.0



655
656
657
# ファイル 'lib/mongo/ サーバー.rb', 行 655

デフォルト next_ connection_id
  @ connection_id_gen.next_id
end

プールMongo::Server::ConnectionPool

このサーバーの接続プールを取得します。

例:

サーバーの接続プールを取得します。

server.pool

次の値を返します。

次の値が発生します。

以来

  • 2.0.0



408
409
410
411
412
413
414
415
416
417
# ファイル 'lib/mongo/ サーバー.rb', 行 408

デフォルト プール
  発生 エラー::ServerNotUsable, address 場合 不明な場合

  @Pool_lock.同期 行う
    ops = 接続されていますか? ? options : options.merge(MongoDB_io: false)
    @Pool ||= 接続プール.新着情報(自己, ops).タップ 行う |プール|
      プール.ready
    end
  end
end

プール_内部 = Server::ConnectionPool | nil

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

このサーバーの接続プールを取得するための内部ドライバー メソッド。

poolとは異なり、 pool_internalではプールがまだ存在しない場合、作成されません。

次の値を返します。

以来

  • 2.0.0



427
428
429
430
431
# ファイル 'lib/mongo/ サーバー.rb', 行 427

デフォルト pool_internal
  @Pool_lock.同期 行う
    @Pool
  end
end

# public_opening_event = Object

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

サーバーを開くイベントを公開します。

以来

  • 2.0.0



331
332
333
334
335
336
# ファイル 'lib/mongo/ サーバー.rb', 行 331

デフォルト public_opening_event
  public_sdump_event(
    モニタリング::SERVER_OPENING,
    モニタリング::イベント::ServerOnce.新着情報(address, クラスター.トポロジー)
  )
end

#再接続します。 = true

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

例:

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

server.reconnect!

次の値を返します。

  • ( true )

    常に true

以来

  • 2.1.0



457
458
459
460
# ファイル 'lib/mongo/ サーバー.rb', 行 457

デフォルト 再接続します。
  モニター.再起動します。 場合 options[:monitoring_io] != false
  @connected = true
end

再試行_読み取りの回数 =ブール値

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

サーバーが最新の読み取り再試行をサポートしているかどうか。

次の値を返します。

  • ブール値

以来

  • 2.0.0



529
530
531
# ファイル 'lib/mongo/ サーバー.rb', 行 529

デフォルト retry_reads?
  !!logical_session_timeout
end

retry_writes? = truefalse

注:

再試行可能な書き込みは、 シャーディングされたクラスター またはレプリカセット でのみ使用できます。

注:

このメソッドの一部の条件は、負荷分散されたトポロジーとして自動的に false を返します。このメソッドの条件は常に true である必要があります。負荷分散されたトポロジーはMongoDB 5.0+ でのみ使用でき、スタンドアロンのトポロジーでは使用できないためです。したがって、再試行書込みが有効になっていると仮定できます。

このサーバーに送信された書き込みを再試行します。

例:

書き込みが再試行されます。

server.retry_writes?

次の値を返します。

  • truefalse

    書込みが再試行される場合。

以来

  • 2.5.0



549
550
551
# ファイル 'lib/mongo/ サーバー.rb', 行 549

デフォルト retry_writes?
  !!((logical_session_timeout & & !スタンドアロン) || load_ balancer?)
end

# start_monitoring =オブジェクト

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

サーバーの監視を開始します。

サーバーがクラスターに含まれるまでの監視を遅延させて、クラスターにサーバーを追加するためにドライバーによって内部的に使用されます。

以来

  • 2.0.0



321
322
323
324
325
326
# ファイル 'lib/mongo/ サーバー.rb', 行 321

デフォルト start_monitoring
  public_opening_event
  return ただし、 options[:monitoring_io] != false

  モニター.実行します。
end

#statusString

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

サーバーの状態を表す string(例: プライマリ)。

次の値を返します。

  • ( string )

    サーバーの状態を表す string(例: プライマリ)。

以来

  • 2.0.0



353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
# ファイル 'lib/mongo/ サーバー.rb', 行 353

デフォルト 状態
  場合 load_ balancer?
    'LB'
  elsif プライマリ?
    プライマリ
  elsif セカンダリか
    セカンダリ
  elsif スタンドアロン
    'STANDALONE'
  elsif アービタ
    'ARBITER'
  elsif ghost?
    'GHOST'
  elsif その他の場合
    その他の 」
  elsif mongos?
    'MONGOS'
  elsif 不明な場合
     UNKNOWN 
  else
    Summary メソッドはデバッグによく使用されるため、次は発生しないです:
    : 予想される型のいずれにも一致しない場合の例外
    nil
  end
end

#のサマリー=オブジェクト

注:

この方法は実験的なものであり、変更される可能性があります。

以来

  • 2.7.0



383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
# ファイル 'lib/mongo/ サーバー.rb', 行 383

デフォルト 概要
  状態 = 自己.状態 || ''
  状態 += " replica_set= #{ replica_set_name } " 場合 replica_set_name

  状態 += ' NO-MONITORING' ただし、 モニター&.実行中

  状態 += " Pool= #{ @group . Summary } " 場合 @Pool

  address_bit = 場合 address
                  " #{アドレス.ホスト} : #{アドレス.ポート} "
                else
                  'nil'
                end

  " #< サーバー アドレス= #{ address_bit } #{ status } > "
end

#不明です。 (オプション = {}) =オブジェクト

サーバーを不明としてマークし、関連する SDAM イベント(サーバーの説明が変更された)を公開します。

生成がオプションで渡される場合、渡された生成がサーバーの接続プールの現在の生成よりも古くない場合にのみ、サーバーは不明としてマークされます。

パラメーター:

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

    オプション。

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

  • : 生成 整数

    エラーを生成した操作に使用された接続の 接続プール生成 。

  • :keep_ connection_Pool true | false

    通常、新しいサーバーの説明が不明な場合、それぞれのサーバーの接続プールがクリアされます。 既存の接続プールを維持するには、このオプションを true に設定します( 4.2 + サーバーでマスター エラーを処理する場合に必要)。

  • :toplog_version (TopologyVersion)

    サーバーが不明としてマークされているエラー応答のトポロジー バージョン。

  • :stop_push_monitor true | false

    サーバーに関連付けられている RustMonor を停止するかどうか(存在する場合)。

  • :service_id オブジェクト

    指定されたサービス ID のみの状態を破棄します。

以来

  • 2.4.0 、 SDAM イベントは バージョン2.7.0として送信されます。



577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
# ファイル 'lib/mongo/ サーバー.rb', 行 577

デフォルト 不明です。(options = {})
  プール = pool_internal

  場合 load_ balancer?
    クライアントが負荷分散されたトポロジーにある場合、サーバー(1 つと
    # のみ)がロード バランサーとして起動し、ロード バランサーとして起動します。
    は、無期限に 個のロード バランサーを指定します。 そのため、不明とはマークされていません。
    #
    ただし、このメソッドはサーバーの接続プールもクリアします
    後者が不明とマークされ、この部分が実行する必要がある場合は#
    サーバーがロード バランサーである場合は、 #。
    #
    ロード バランサー サーバーにはサービス ID がない場合も可能です。
    #例えば、への成功した接続がまだない場合は、
    このサーバーはしますが、次の場合にはサーバーを不明にマークできます
    このような接続の数は、確立の途中で失敗しました。
    場合 service_id = options[:service_id]
      プール&.切断します。(service_id: service_id)
    end
    return
  end

  注: プールが nil の場合は が終了するため、ここで安全なナビゲーションを使用することはできません
  無効である整数未満の整数を評価しようとすることがあります。
  return 場合 options[: 生成] & & プール & & options[: 生成] < プール.生成

  場合 options[:toplog_version] & & 説明.topic & &
     !options[:toplog_version].gt?(説明.topic)
    return
  end

  モニター&.stop_push_monitor. 場合 options[:stop_push_monitor]

  SDAM フローでは、インプレースなしでサーバー上の説明が更新されます
  必要に応じて 個のミューテーションを使用し、SDAM 移行を呼び出します。
  config = {}
  config[' serviceId '] = options[:service_id] 場合 options[:service_id]
  config['topologyVersion'] = options[:toplog_version] 場合 options[:toplog_version]
  new_description = 説明.新着情報(address, config,
                                    load_Balancer: load_ balancer?,
                                    force_load_Balancer: options[:connect] == :load_ ユーザー分散)
  クラスター.run_sam_flow(説明, new_description, options)
end

# update_description (description) =オブジェクト

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

以来

  • 2.0.0



622
623
624
625
626
# ファイル 'lib/mongo/ サーバー.rb', 行 622

デフォルト update_description(説明)
  プール = pool_internal
  プール.ready 場合 プール & & !説明.不明な場合
  @description = 説明
end

#update_last_scanObject

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

以来

  • 2.0.0



660
661
662
663
# ファイル 'lib/mongo/ サーバー.rb', 行 660

デフォルト update_last_scan
  @last_scan = 時間.になりました
  @last_scan_mongotime = Utils.MongoDB_time
end

# with_ connection ( connection_ global_id: nil, context: nil, &lock) = オブジェクト

接続を使用してコード ブロックを実行します。このブロックはサーバーのプールからチェックアウトされ、その後チェックインされます。

例:

接続を含む メッセージを送信します。

server.with_connection do |connection|
  connection.dispatch([ command ])
end

次の値を返します。

  • オブジェクト

    ブロック実行の結果。

以来

  • 2.3.0



473
474
475
476
477
478
479
# ファイル 'lib/mongo/ サーバー.rb', 行 473

デフォルト with_ connection(connection_ global_id: nil, context: nil, &ブロック)
  プール.with_ connection(
    connection_ global_id: connection_ global_id,
    context: context,
    &ブロック
  )
end