bson/testdata/connection-monitoring-and-pooling/pool-checkout-minPoolSize-connection-maxConnecting.yml
2025-03-17 20:58:26 +01:00

64 lines
2.2 KiB
YAML

version: 1
style: integration
description: threads blocked by maxConnecting check out minPoolSize connections
runOn:
-
# required for blockConnection in fail point
minServerVersion: "4.4.0"
failPoint:
configureFailPoint: failCommand
mode: "alwaysOn"
data:
failCommands: ["isMaster","hello"]
closeConnection: false
blockConnection: true
blockTimeMS: 500
poolOptions:
# allows both thread1 and the background thread to start opening connections concurrently
minPoolSize: 2
# gives opportunity for the checkout in thread2 to open a new connection, which it must not do nonetheless
maxPoolSize: 3
waitQueueTimeoutMS: 5000
operations:
- name: ready
# thread1 exists to hold on one of the two permits to open a connection (the other one is initially held by the background thread),
# so that thread2 would be blocked acquiring a permit, which opens an opportunity for it to grab the connection newly opened
# by the background thread instead of opening a third connection.
- name: start
target: thread1
- name: start
target: thread2
# Ideally, thread1 should be holding for its permit to open a connection till the end of the test, but we cannot express that.
# This delay emulates the above requirement:
# - it is long enough to make sure that the background thread opens a connection before thread1 releases its permit;
# - it is short enough to allow thread2 to become blocked acquiring a permit to open a connection, and then grab the connection
# opened by the background thread, before the background thread releases its permit.
- name: wait
ms: 200
- name: checkOut
thread: thread1
- name: waitForEvent
event: ConnectionCreated
count: 2
- name: checkOut
thread: thread2
- name: waitForEvent
event: ConnectionCheckedOut
count: 2
events:
# exactly 2 connections must be created and checked out
- type: ConnectionCreated
address: 42
- type: ConnectionCreated
address: 42
- type: ConnectionCheckedOut
address: 42
- type: ConnectionCheckedOut
address: 42
ignore:
- ConnectionPoolReady
- ConnectionClosed
- ConnectionReady
- ConnectionPoolCreated
- ConnectionCheckOutStarted