クラス: Mongo::Server::ConnectionPool

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
次のことが含まれます。
ログ可能 、監視::公開可能
定義:
build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb
build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_role/populator.rb,
build/ruby-Driver-v 2.19 /lib/mongo/server/接続_プール/生成_manager.rb

Overview

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

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた

名前空間で定義済み

クラス: 生成管理 、

定数の概要の削減

DEFAULT_MAX_SIZE =

接続プールのデフォルトの最大サイズ。

以来

  • 2.9.0

20.freeze
DEFAULT_MIN_SIZE =

接続プールのデフォルトの最小サイズ。

以来

  • 2.9.0

0.freeze
DEFAULT_WAIT_OUT_TIME =

接続を待機するためのデフォルトのタイムアウト(秒単位)。

このタイムアウトは、フロー スレッドがバックグラウンド スレッドが接続を確立するのを待機しているときに適用されます(割り当てられた時間内で接続、ハンドシェイク、認証を行う必要があります)。

現在は10秒に設定されています。 デフォルトの接続タイムアウトは単独で10秒ですが、大きなタイムアウトを設定するとアプリケーションがリバース プロキシによってタイムアウトされた場合に問題が発生する可能性があるため、 15秒を超えると 潜在的にリスク が発生します。

以来

  • 2.9.0

10.freeze

Loggableに含まれる定数

ログ可能::PRFIX

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

Monitoring::Publishable

#monitoring

クラスメソッドの概要を折りたたむ

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

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

#publish_cmap_event#publish_event#publish_sam_event

Loggableに含まれるメソッド

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

コンストラクターの詳細

#初期化(サーバー、オプション = {}) = ConnectionPool

新しい接続プールを作成します。

注:さらに、このプールによって作成された接続のオプションは

be included in the options passed here, and they will be forwarded to
any connections created by the pool.

パラメーター:

  • サーバー サーバー

    この接続プールが属するサーバー。

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

    接続プール オプション。

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

  • :max_size 整数

    最大プール サイズ。 このオプションを 0 に設定すると、無制限の接続プールが作成されます。

  • :max_Pool_size 整数

    非推奨。 最大プール サイズ。 max_size も指定されている場合、max_size と max_Pool_size は同一である必要があります。

  • :min_size 整数

    の最小プール サイズ。

  • :min_Pool_size 整数

    非推奨。 の最小プール サイズ。 min_size も指定される場合、min_size と min_Pool_size は同一である必要があります。

  • :wait_timeout 浮動小数

    無料接続の待機時間(秒単位)。

  • :wait_queue_timeout 浮動小数

    非推奨。 :wait_timeout のエイリアス。 wait_timeout と wait_queue_timeout の両方が指定される場合、それらの値は同じである必要があります。

  • :max_idle_time 浮動小数

    アイドル接続がプールによって閉じられる必要がある時間(秒単位)。

  • :populator_io truefalse

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

以来

  • 2.0.0 、 2.9.0で API が変更されました



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行92

デフォルト 初期化(サーバー, options = {})
  ただし、 サーバー.is_a?(サーバー)
    発生 ArgumentError, '最初の引数はサーバーインスタンスである必要があります'
  end
  options = options.dup
  場合 options[:min_size] & & options[:min_Pool_size] & & options[:min_size] != options[:min_Pool_size]
    発生 ArgumentError, "最小サイズ#{オプション[ :min_size ] }は、最小プール サイズ{オプション[ :min_Pool_size ] } } と同一ではありませ
  end
  場合 options[:max_size] & & options[:max_Pool_size] & & options[:max_size] != options[:max_Pool_size]
    発生 ArgumentError, " Max size #{ options [ :max_size ] } は maxPool サイズ : { option [ :max_Pool_size ] } と同一ではありませ ん
  end
  場合 options[:wait_timeout] & & options[:wait_queue_timeout] & & options[:wait_timeout] != options[:wait_queue_timeout]
    発生 ArgumentError, "待機タイムアウト#{オプション[ :wait_timeout ] }は待機キュー タイムアウト#{オプション[ :wait_queue_timeout ] }と同一ではありませ
  end
  options[:min_size] ||= options[:min_Pool_size]
  options.削除(:min_Pool_size)
  options[:max_size] ||= options[:max_Pool_size]
  options.削除(:max_Pool_size)
  場合 options[:min_size] & & options[:max_size] & &
    (options[:max_size] != 0 & & options[:min_size] > options[:max_size])
  次に
    発生 ArgumentError, "  最小 サイズ を 使用 でき ませ ん
  end
  場合 options[:wait_queue_timeout]
    options[:wait_timeout] ||= options[:wait_queue_timeout]
  end
  options.削除(:wait_queue_timeout)

  @server = サーバー
  @options = options.freeze

  @generation_manager = 生成管理.新着情報(サーバー: サーバー)
  @ready = false
  @closed = false

  # このプールによって所有される接続は、次のいずれかである必要があります:
  利用可能な接続配列の数 (スタックとして使用されます)
  チェックアウトされた接続セット内の または 。
  @available_ connections = available_ connections = []
  @checked_out_ connections = セット.新着情報
  @pending_ connections = セット.新着情報
  @Interrupt_ connections = []

  @available_ connections と へのアクセスを同期するために使用されるミューテックス
  # @checked_out_ connections プール オブジェクトはスレッドセーフであるため、
  インスタンス変数を一般的に検索または変更するすべてのメソッド
  # はこのロックの下でその操作を行う必要があります。
  @lock = ミューテックス.新着情報

  バックグラウンド スレッドがいずれのサイズを維持するかを担当する
  プールを少なくとも min_size に設定する
  @populator = 人口.新着情報(自己, options)
  @popute_smahour = セマフォア.新着情報

  checkpoint_out: max_Pool_size で最初のチェックを強制するための条件変数。
  # この条件変数は、次の数の場合にシグナルを発する必要があります:
  使用できない接続の数が減少します(pending + pending_ connections +
  利用可能な_接続の数)。
  @size_cv = mongo::条件変数.新着情報(@lock)
  これは、size_cv を超えたスレッド数を表します
  # ゲートを使用しているが、pending_ connection に追加する接続を取得していなかった
  # セット。
  @ connection_requests = 0

  checkpoint_out: max_connecting で 2 回目のチェックを強制するための条件変数。
  # 条件変数は、保留中の
  接続数が減少します。
  @max_connecting_cv = mongo::条件変数.新着情報(@lock)
  @max_connecting = options.fetch(:max_connecting, 2)

  ObjectSpace.refine_ finalizer(自己, 自己.クラス.finalize(@available_ connections, @pending_ connections, @populator))

  public_cmap_event(
    モニタリング::イベント::Cmap::PoolCreated.新着情報(@server.address, options, 自己)
  )
end

インスタンス属性の詳細

# generate_manager =整数(readonly)

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

現在キューによって使用されている接続の生成を返します。

次の値を返します。

  • (整数)

    生成 現在キューによって使用されている接続の生成。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



216
217
218
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行216

デフォルト generate_manager
  @generation_manager
end

# max_connecting 詳しくは、オブジェクト(読み取り専用)

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

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



325
326
327
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行325

デフォルト max_connecting
  @max_connecting
end

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

オプション プール オプションを返します。

次の値を返します。

  • ハッシュ

    options プール オプション。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



170
171
172
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行170

デフォルト options
  @options
end

# put_smahourオブジェクト(読み取り専用)

プールのサイズが変更されたときに条件変数をブロードキャストしてポインターを起動

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



55
56
57
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行55

デフォルト put_smahour
  @popute_smahour
end

およびオブジェクト(読み取り専用)

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

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



322
323
324
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行322

デフォルト 人口
  @populator
end

#サーバー=オブジェクト(読み取り専用)

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

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



173
174
175
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行173

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

クラスメソッドの詳細

finalize (利用可能_接続、保留中_接続、入力あり) ============================================

ガベージ コレクションの接続プールを終了します。

パラメーター:

  • available_ connections List<Mongo::Connection>

    利用可能な接続。

  • Pending_ connections List<Mongo::Connection>

    保留中の接続。

  • 人口 人口

    入力値。

次の値を返します。

  • Proc

    アナライザ。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行787

デフォルト 自己.finalize(available_ connections, Pending_ connections, 人口)
  proc 行う
    available_ connections. 行う |接続|
      接続.切断します。(理由: :Pool_closed)
    end
    available_ connections.クリア

    Pending_ connections. 行う |接続|
      接続.切断します。(理由: :Pool_closed)
    end
    Pending_ connections.クリア

    # finalizer はチェックアウトした接続を閉じません。
    #これらは独自にガベージ コレクションを使用する必要があります
    # と がある場合は、それらを閉じます。
  end
end

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

# available_count =整数

プール内の利用可能な接続の数。

次の値を返します。

  • (整数)

    使用可能な接続の数。

以来

  • 2.9.0



274
275
276
277
278
279
280
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行274

デフォルト available_count
  accumulate_if_closed。

  @lock.同期 行う
    @available_ connections.Length
  end
end

# checkpoint_in (接続) =オブジェクト

プールへの接続を確認します。

接続はこのプールによって過去に作成されている必要があります。

パラメーター:

以来

  • 2.9.0



379
380
381
382
383
384
385
386
387
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行379

デフォルト checkpoint_in(接続)
  checkpoint_invariant

  @lock.同期 行う
    do_check_in(接続)
  end
保証する
  checkpoint_invariant
end

# checkpoint_ global_id : nil) = Mongo::Server::Connection

プールから接続をチェックアウトします。

プール内にアクティブな接続がある場合は、最近使用した接続が返されます。 それ以外の場合、接続プールのサイズが最大サイズより小さい場合は、 は新しい接続を作成して返します。 それ以外の場合、アクティブな接続がまだなく、プールが最大サイズの場合は、 は待機タイムアウトまで待機し、 Timeout::Error を発生させます。

返された接続は、プールの最大サイズにカウントされます。 呼び出し元が接続の使用を終了したら、 checkpoint_in メソッドによって接続がチェックインされます。

次の値を返します。

次の値が発生します。

  • Error::PoolClosedError

    プールが閉じられた場合。

  • (Timeout::Error)

    接続プールが最大サイズで、待機タイムアウトよりも長時間にわたってその状態にある場合。

以来

  • 2.9.0



345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行345

デフォルト checkpoint_out(connection_ global_id: nil)
  checkpoint_invariant

  public_cmap_event(
    モニタリング::イベント::Cmap::ConnectionCheckOutStarted.新着情報(@server.address)
  )

  resume_if_Pool_closed の接続数。
  resume_if_Pool_一時停止_ロック

  接続 = return_and_connect_ connection(connection_ global_id)

  public_cmap_event(
    モニタリング::イベント::Cmap::ConnectionCheckedOut.新着情報(@server.address, 接続.id, 自己),
  )

  場合 Lint.有効か
    ただし、 接続.接続されていますか?
      発生 エラー::LintError, " { アドレス } の接続プール は切断された接続 #{ 接続 . 生成 } をチェックアウトしました : #{ 接続 . ID } "
    end
  end

  接続
保証する
  checkpoint_invariant
end

#クリア(オプション = nil) = true

プール内のすべてのアイドル接続を閉じ、現在チェックアウトされている接続がプールにチェックインされたときに閉じるようにスケジュールします。 プールは一時停止されると、バックグラウンドに新しい接続を作成せず、準備完了とマークされるまでチェックアウトリクエストは失敗します。

パラメーター:

  • options ハッシュ (デフォルトはnil

    カスタマイズ可能なオプションのセット

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

  • :lasy true | false

    true の場合、アイドル接続はいずれも閉じられず、代わりに後続のチェックアウト操作中にアイドル接続が閉じられたままになります。 デフォルトは false です。

  • :中断_in_use_ connections true | false

    true の場合、チェックアウトした接続をすべてすぐに閉じます。 false の場合は、チェックアウトした接続を閉じないでください。 デフォルトは true です。

  • :service_id オブジェクト

    指定されたサービス ID のみの接続をクリアします。

次の値を返します。

  • ( true )

    true。

以来

  • 2.1.0



497
498
499
500
501
502
503
504
505
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行497

デフォルト クリア(options = nil)
  accumulate_if_closed。

  場合 Lint.有効か & & !@server.不明な場合
    発生 エラー::LintError, " 既知 のサーバー #{ @server . Summary } のプールをクリアしようとして いる とき
  end

  do_ clear(options)
end

# close (オプション = nil) = true

プールを閉じてマークし、プール内のすべてのアイドル接続を閉じ、現在チェックアウトされている接続がプールにチェックインされたときに閉じるようにスケジュールします。 強制 オプションが true の場合、チェックアウトした接続も閉じられます。 プールが閉じられた後に使用しようとすると、 Error::PoolClosedError が発生します。

パラメーター:

  • options ハッシュ (デフォルトはnil

    カスタマイズ可能なオプションのセット

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

  • : 強制 true | false

    また、チェックアウトした接続もすべて閉じます。

  • :staty_ready true | false

    内部ドライバーのみを使用します。 プールを閉じたものとしてマークするかどうか。

次の値を返します。

  • ( true )

    常に true

以来

  • 2.9.0



621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行621

デフォルト 閉じる(options = nil)
  return 場合 閉じましたか

  options ||= {}

  stop_populator

  @lock.同期 行う
    まで @available_ connections.空の場合
      接続 = @available_ connections.ポップ
      接続.切断します。(理由: :Pool_closed)
    end

    場合 options[: 強制]
      まで @checked_out_ connections.空の場合
        接続 = @checked_out_ connections.(1).最初に
        接続.切断します。(理由: :Pool_closed)
        @checked_out_ connections.削除(接続)
      end
    end

    ただし、 options & & options[:staty_ready]
      ロックを解放する前に、プールを閉じたものとしてマークするため、
      # 接続の作成、チェックイン、チェックアウトはできません
      @closed = true
      @ready = false
    end

    @max_connecting_cv.ブロードキャスト
    @size_cv.ブロードキャスト
  end

  public_cmap_event(
    モニタリング::イベント::Cmap::PoolClosed.新着情報(@server.address, 自己)
  )

  true
end

close_idle_sockets =オブジェクト

最大アイドル時間よりも長時間開いているソケットを閉じます。

if the option is set.

以来

  • 2.5.0



708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行708

デフォルト close_idle_sockets
  return 場合 閉じましたか
  return ただし、 max_idle_time

  @lock.同期 行う
    i = 0
    一方 i < @available_ connections.Length
      接続 = @available_ connections[i]
      場合 last_checkin = 接続.last_checkin
        場合 (時間.になりました - last_checkin) > max_idle_time
          接続.切断します。(理由: :idle)
          @available_ connections.delete_at(i)
          @popute_smahour.シグナル
          次へ
        end
      end
      i += 1
    end
  end
end

#閉じました= true | false

プールが閉じられているかどうか。

次の値を返します。

  • true | false

    プールが閉じているかどうか。

以来

  • 2.9.0



287
288
289
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行287

デフォルト 閉じましたか
  !!@closed
end

#切断します。 (options = nil) =オブジェクト

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

プールを切断します。

プールが閉じられている場合を除き、このメソッドは何も実行しませんが、 clear clearは PoolClosedError を発生させます。

以来

  • 2.1.0



514
515
516
517
518
519
520
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行514

デフォルト 切断します。(options = nil)
  do_ clear(options)
ヘルプ エラー::PoolClosedError
  # 「切断」 状態は閉じてから一時停止までの間です。
  # プールを切断する際、プールが次の状態であることを許可します:
  はすでに終了しています。
end

# do_check_in (接続) =オブジェクト

ロックをすでに取得した後にチェックインを実行します。

パラメーター:

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行392

デフォルト do_check_in(接続)
  接続が中断されると、プールにチェックバックされます
  # と閉じた。 になる前に接続を使用していた操作
  中断された場合はプールにチェックバックしようとします。
  # はすでに閉じられ、プールから削除されているため、それを無視する必要があります。
  return 場合 接続.閉じましたか & & 接続.中断された場合

  ただし、 接続.connection_Pool == 自己
    発生 ArgumentError, 「 この プール によって チェック アウト され なかっ た 接続 を チェックイン しよ う と し て いる とき
  end

  ただし、 @checked_out_ connections.include?(接続)
    発生 ArgumentError,  現在、このプールによってチェックアウトされていない接続を チェック イン しよ  し て いる とき
  end

  ただし、イベント ハンドラーが発生した場合、リソースはシグナル化されません。
  # これは、接続が解放されるのを待機しているスレッドを意味します
  や プールが最大サイズの場合はタイムアウトする可能性があります。
  このメソッドが完了した後に待機を開始するスレッド(
  # は例外です)。

  @checked_out_ connections.削除(接続)
  @size_cv.シグナル

  public_cmap_event(
    モニタリング::イベント::Cmap::ConnectionCheckedIn.新着情報(@server.address, 接続.id, 自己)
  )

  場合 接続.中断された場合
    接続.切断します。(理由: :stale)
    return
  end

  場合 接続.error?
    接続.切断します。(理由: :error)
    return
  end

  場合 閉じましたか
    接続.切断します。(理由: :Pool_closed)
    return
  end

  場合 接続.閉じましたか
    # 接続が閉じました - 例として
    # ネットワークエラー。 ここでは他に何もする必要はありません。
    @popute_smahour.シグナル
  elsif 接続.生成 != 生成(service_id: 接続.service_id) & & !接続.ピン留めされたかどうか
    #接続が固定としてマークされている場合、トランザクションによって使用されます
    または、負荷分散された設定における一連のカーソル操作。
    # この場合、次まで接続を切断してはなりません:
    は、固定を解除します。
    接続.切断します。(理由: :stale)
    @popute_smahour.シグナル
  else
    接続.Record_checkin.
    @available_ connections < 接続

    @max_connecting_cv.シグナル
  end
end

# do_completed (options = nil) =オブジェクト

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行522

デフォルト do_ clear(options = nil)
  checkpoint_invariant

  service_id = options & & options[:service_id]

  @lock.同期 行う
    プール クリア イベントを発行する前に、生成をアップグレードする必要があります。
    @generation_manager.(service_id: service_id)

    ただし、 options & & options[:lasy]
      close_available_ connections(service_id)
    end

    場合 options & & options[:中断_in_use_ connections]
      schedule_for_Interruption(@checked_out_ connections, service_id)
      schedule_for_Interruption(@pending_ connections, service_id)
    end

    場合 @ready
      public_cmap_event(
        モニタリング::イベント::Cmap::PoolCleared.新着情報(
          @server.address,
          service_id: service_id,
          insert_in_use_ connections: options&.[](:中断_in_use_ connections)
        )
      )
      サーバーが不明とマークされている場合のみ接続プールを一時停止します
      # それ以外の場合は、準備完了プールを使用して再試行できるようにします。
      do_一時停止 場合 !@server.load_ balancer? & & @server.不明な場合
    end

    #ここでブロードキャストすると、すべてのスレッドが最大値 を待機します
    待機ループとエラーを解除するには、 を接続します。
    @max_connecting_cv.ブロードキャスト
    #ここでブロードキャストすると、すべてのスレッドがプール サイズを待機します
    待機ループとエラーを解除するための # 。
    @size_cv.ブロードキャスト
  end

  # クリア後に「バックグラウンド スレッドをスケジュールする」。 これは責任を負います
  古いスレッドをクリーンアップし、使用中の接続を中断するための #。
  @popute_smahour.シグナル
  true
保証する
  checkpoint_invariant
end

# do_ paused =オブジェクト

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

ロックを取得せずに接続プールを一時停止としてマークします。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



470
471
472
473
474
475
476
477
478
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行470

デフォルト do_一時停止
  場合 Lint.有効か & & !@server.不明な場合
    発生 エラー::LintError, " 既知 のサーバー #{ @server . Summary } のプールを一時停止しようとして いる とき
  end

  return 場合 !@ready

  @ready = false
end

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

プールのpretty-printed string 検査を取得します。

例:

プールを調べます。

pool.inspect

次の値を返します。

  • ( string )

    プール検査。

以来

  • 2.0.0



668
669
670
671
672
673
674
675
676
677
678
679
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行668

デフォルト 検査する
  場合 閉じましたか
    " #< Mongo::Server::ConnectionPool: 0 x #{ object_id } min_size= #{ min_size } max_size= #{ max_size } " +
      " wait_timeout= #{ wait_timeout }閉じた> "
  elsif !準備はできていますか?
    " #< Mongo::Server::ConnectionPool: 0 x #{ object_id } min_size= #{ min_size } max_size= #{ max_size } " +
      " wait_timeout= #{ wait_timeout } paused > "
  else
    " #< Mongo::Server::ConnectionPool: 0 x #{ object_id } min_size= #{ min_size } max_size= #{ max_size } " +
      " wait_timeout= #{ wait_timeout } current_size= #{ size } available= #{ available_count } > "
  end
end

#max_idle_timeFloat | nil

プールにチェックインしてからソケットがアイドル状態を維持できる最大秒数(設定されている場合)。

次の値を返します。

  • (Float | nil)

    最大ソケットアイドル時間(秒単位)。

以来

  • 2.9.0



211
212
213
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行211

デフォルト max_idle_time
  @max_idle_time ||= options[:max_idle_time]
end

#max_sizeInteger

接続プールの最大サイズを取得します。

次の値を返します。

  • (整数)

    接続プールの最大サイズ。

以来

  • 2.9.0



183
184
185
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行183

デフォルト max_size
  @max_size ||= options[:max_size] || [DEFAULT_MAX_SIZE, min_size].最大
end

#min_sizeInteger

接続プールの最小サイズを取得します。

次の値を返します。

  • (整数)

    接続プールの最小サイズ。

以来

  • 2.9.0



192
193
194
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行192

デフォルト min_size
  @min_size ||= options[:min_size] || DEFAULT_MIN_SIZE
end

#一時停止=オブジェクト

接続プールを一時停止としてマークします。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



455
456
457
458
459
460
461
462
463
464
465
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行455

デフォルト pause
  accumulate_if_closed。

  checkpoint_invariant

  @lock.同期 行う
    do_一時停止
  end
保証する
  checkpoint_invariant
end

一時停止しましたか? = true | false

接続プールは、閉じられておらず、準備ができていない場合、一時停止されます。

次の値を返します。

  • true | false

    接続プールが一時停止されているかどうか。

次の値が発生します。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



229
230
231
232
233
234
235
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行229

デフォルト 一時停止しました
  accumulate_if_closed。

  @lock.同期 行う
    !@ready
  end
end

#trueに設定されています。 false

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

このメソッドは 3 つの処理を行います。

  1. プールのサイズが min_size を下回る場合は、プールへの接続を作成し、追加します。 このプロセス中にソケット関連のエラーが発生した場合は 1 回再試行し、2 番目のエラーやソケットに関連しないエラーが発生した場合は が発生します。

  2. 接続プールから古い接続を削除します。

  3. 中断対象としてマークされた接続を中断します。

プール 入力値のバックグラウンド スレッドによって使用されます。

、またはソケット関連以外のエラーが発生した

次の値を返します。

  • true | false

    このメソッドを再度呼び出してより多くの接続を作成するかどうか。

次の値が発生します。

  • (Error::AuthError, Error)

    再試行した場合に発生した 2 つ目のソケット関連のエラー

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



766
767
768
769
770
771
772
773
774
775
776
777
778
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行766

デフォルト 入力する
  return false 場合 閉じましたか

  begin
    return create_and_add_ connection
  ヘルプ エラー::SocketError, エラー::SocketTimeoutError => e
    接続の接続中にエラーが発生しました
    この最初のエラーを無視して、もう一度お試しください。
    log_警告(" Atlas の接続に失敗しました  : #{ e . クラス } : # { { e } 。再試行し ます 。)
  end

  return create_and_add_ connection
end

オブジェクト

接続を作成して返すようにプールに指示します。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



570
571
572
573
574
575
576
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
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行570

デフォルト ready
  accumulate_if_closed。

  # TODO: これを Ruby- 3174で追加します。
  Lint. が有効な場合は?
  @server.connector 以外の場合は になりますか。
  # エラー::LintError, "サーバー ためのプールを準備しようとしているとき 切断されている
  #   end
  # end

  @lock.同期 行う
    return 場合 @ready

    @ready = true
  end

  CMAP 仕様では、
  プール。 これを実装するには、イベント発行を次のように行う必要があります:
  サブスクライブが呼び出される代わりに同期されるキューを使用する
  triggerメソッドからの # をインラインで使用します。 MRI では、 を前提としています。
  スレッドが実行する作業を停止したときに他のスレッドに中断する場合、次のようになります
  イベントは実際には常に で公開される可能性が高くなります。
  が必要な注文数。 OS スレッドと完全に同時実行される JRuby
  # では、そのような保証は提供されません。
  public_cmap_event(
    モニタリング::イベント::Cmap::PoolReady.新着情報(@server.address, options, 自己)
  )

  場合 options.fetch(:populator_io, true)
    場合 @populator.実行中
      @popute_smahour.シグナル
    else
      @populator.実行します。
    end
  end
end

#準備完了= true | false

プールが準備できているかどうか。

次の値を返します。

  • true | false

    プールが準備できているかどうか。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



294
295
296
297
298
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行294

デフォルト 準備はできていますか?
  @lock.同期 行う
    @ready
  end
end

#sizeInteger

接続プールのサイズ。

使用可能な接続とチェックアウトした接続を含みます。

次の値を返します。

  • (整数)

    接続プールのサイズ。

以来

  • 2.9.0



244
245
246
247
248
249
250
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行244

デフォルト サイズ
  accumulate_if_closed。

  @lock.同期 行う
    unsynchronized_size
  end
end

# stop_populator =オブジェクト

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

バックグラウンド 入力値を停止し、作成された接続のうちまだ接続されていない接続をクリーンアップします。

プールを閉じるか、テスト目的で bg スレッドを終了するときに使用されます。 後者の場合、プールが使用される前にこのメソッドを呼び出す必要があります。pending_ connection 内の接続が checkpoint メソッドによってインフローして作成されないようにします。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



738
739
740
741
742
743
744
745
746
747
748
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行738

デフォルト stop_populator
  @populator.停止します。

  @lock.同期 行う
    # が実行中に stop_populator が呼び出された場合、次が発生する可能性があります:
    接続を待機している接続数、まだ接続されていない接続
    が利用可能_接続に移動されたか、利用可能な接続に接続が移動されました
    # ただし、pending_ connection から削除されていません。 これらはクリーンアップする必要があります。
    clear_pending_ connections
  end
end

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

注:

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

以来

  • 2.11.0



304
305
306
307
308
309
310
311
312
313
314
315
316
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行304

デフォルト 概要
  @lock.同期 行う
    状態 = 場合 閉じましたか
      ' を閉じた'
    elsif !@ready
      ' paused '
    else
      ' ready '
    end
    " #{ConnectionPool size= #{ unsynchronized_size }  #{ min_size } - #{ max_size } )] " +
      " used= #{ @checked_out_ connections .Length } } avail = #{ @available_ connections .Length } } Pending = { @pending_ connections .Length } } #{ 状態 } > "
  end
end

次の接続を使用できません:整数

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

プール内の利用できない接続の数を返します。 max_Pool_size に達しているかどうかを計算するために使用されます。

次の値を返します。

  • (整数)

    プール内の利用できない接続の数。 max_Pool_size に達しているかどうかを計算するために使用されます。

以来

  • 2.0.0 、 2.9.0で大幅に書き換えられた



265
266
267
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行265

デフォルト disabled_ connections
  @checked_out_ connections.Length + @pending_ connections.Length + @ connection_requests
end

#wait_timeoutFloat

接続可能になるまで待機する時間(秒単位)。

次の値を返します。

  • 浮動小数

    キューの待機タイムアウト。

以来

  • 2.9.0



201
202
203
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行201

デフォルト wait_timeout
  @wait_timeout ||= options[:wait_timeout] || DEFAULT_WAIT_TIMEOUT
end

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

チェックイン/チェックアウト ロジックを処理しながら、接続にブロックを中断します。

例:

接続を使用して を実行します。

pool.with_connection do |connection|
  connection.read
end

次の値を返します。

  • オブジェクト

    ブロックの結果。

以来

  • 2.0.0



691
692
693
694
695
696
697
698
699
700
701
702
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/ connection_Pool.rb', 行691

デフォルト with_ connection(connection_ global_id: nil)
  accumulate_if_closed。

  接続 = checkpoint_out(connection_ global_id: connection_ global_id)
  ノードの数(接続)
ヘルプ エラー::SocketError, エラー::SocketTimeoutError, エラー::ConnectionPershed => e
  があります。(接続, e)
保証する
  場合 接続
    checkpoint_in(接続)
  end
end