Skip to content

Commit 615e3dd

Browse files
authored
CDRIVER-2390 remove minPoolSize URI option (#1932)
* test `minPoolSize` is unrecognized * remove `MONGOC_URI_MINPOOLSIZE` * remove `mongoc_client_pool_min_size` * skip spec tests expecting `minPoolSize` to be accepted * update libmongoc-specific test to exclude minPoolSize
1 parent 826bafd commit 615e3dd

12 files changed

+24
-195
lines changed

NEWS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Unreleased (2.0.0)
4040
* `mongoc_cursor_is_alive` is removed. Use the equivalent `mongoc_cursor_more` instead.
4141
* `mongoc_collection_delete` is removed. Use `mongoc_collection_delete_one` or `mongoc_collection_delete_many` instead.
4242
* `mongoc_delete_flags_t` and `mongoc_reply_flags_t` are removed.
43+
* Support for the deprecated `minPoolSize` URI option is removed along with associated API: `MONGOC_URI_MINPOOLSIZE` and `mongoc_client_pool_min_size`.
4344
* Support for LibreSSL (the CMake option `ENABLE_SSL=LIBRESSL`) is removed. Associated API is removed (`MONGOC_ENABLE_SSL_LIBRESSL` and `mongoc_stream_tls_libressl_new`).
4445

4546
### Forwarding headers (`#include <bson.h>` and `#include <mongoc.h>`)

src/libmongoc/doc/mongoc_client_pool_min_size.rst

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/libmongoc/doc/mongoc_client_pool_t.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ Example
3333
mongoc_client_pool_destroy
3434
mongoc_client_pool_enable_auto_encryption
3535
mongoc_client_pool_max_size
36-
mongoc_client_pool_min_size
3736
mongoc_client_pool_new
3837
mongoc_client_pool_new_with_error
3938
mongoc_client_pool_pop

src/libmongoc/doc/mongoc_uri_t.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ These options govern the behavior of a :symbol:`mongoc_client_pool_t`. They are
201201
Constant Key Description
202202
========================================== ================================= =========================================================================================================================================================================================================================
203203
MONGOC_URI_MAXPOOLSIZE maxpoolsize The maximum number of clients created by a :symbol:`mongoc_client_pool_t` total (both in the pool and checked out). The default value is 100. Once it is reached, :symbol:`mongoc_client_pool_pop` blocks until another thread pushes a client.
204-
MONGOC_URI_MINPOOLSIZE minpoolsize Deprecated. This option's behavior does not match its name, and its actual behavior will likely hurt performance.
205204
MONGOC_URI_WAITQUEUETIMEOUTMS waitqueuetimeoutms The maximum time to wait for a client to become available from the pool.
206205
========================================== ================================= =========================================================================================================================================================================================================================
207206

src/libmongoc/src/mongoc/mongoc-client-pool.c

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ struct _mongoc_client_pool_t {
4545
mongoc_queue_t queue;
4646
mongoc_topology_t *topology;
4747
mongoc_uri_t *uri;
48-
uint32_t min_pool_size;
4948
uint32_t max_pool_size;
5049
uint32_t size;
5150
#ifdef MONGOC_ENABLE_SSL
@@ -166,23 +165,13 @@ mongoc_client_pool_new_with_error (const mongoc_uri_t *uri, bson_error_t *error)
166165
mongoc_cond_init (&pool->cond);
167166
_mongoc_queue_init (&pool->queue);
168167
pool->uri = mongoc_uri_copy (uri);
169-
pool->min_pool_size = 0;
170168
pool->max_pool_size = 100;
171169
pool->size = 0;
172170
pool->topology = topology;
173171
pool->error_api_version = MONGOC_ERROR_API_VERSION_LEGACY;
174172

175173
b = mongoc_uri_get_options (pool->uri);
176174

177-
if (bson_iter_init_find_case (&iter, b, MONGOC_URI_MINPOOLSIZE)) {
178-
MONGOC_WARNING (MONGOC_URI_MINPOOLSIZE " is deprecated; its behavior does not match its name, and its actual"
179-
" behavior will likely hurt performance.");
180-
181-
if (BSON_ITER_HOLDS_INT32 (&iter)) {
182-
pool->min_pool_size = BSON_MAX (0, bson_iter_int32 (&iter));
183-
}
184-
}
185-
186175
if (bson_iter_init_find_case (&iter, b, MONGOC_URI_MAXPOOLSIZE)) {
187176
if (BSON_ITER_HOLDS_INT32 (&iter)) {
188177
pool->max_pool_size = BSON_MAX (1, bson_iter_int32 (&iter));
@@ -477,15 +466,6 @@ mongoc_client_pool_push (mongoc_client_pool_t *pool, mongoc_client_t *client)
477466
// Push client back into pool.
478467
_mongoc_queue_push_head (&pool->queue, client);
479468

480-
if (pool->min_pool_size && _mongoc_queue_get_length (&pool->queue) > pool->min_pool_size) {
481-
mongoc_client_t *old_client;
482-
old_client = (mongoc_client_t *) _mongoc_queue_pop_tail (&pool->queue);
483-
if (old_client) {
484-
mongoc_client_destroy (old_client);
485-
pool->size--;
486-
}
487-
}
488-
489469
mongoc_cond_signal (&pool->cond);
490470
bson_mutex_unlock (&pool->mutex);
491471

@@ -556,22 +536,6 @@ mongoc_client_pool_max_size (mongoc_client_pool_t *pool, uint32_t max_pool_size)
556536
EXIT;
557537
}
558538

559-
void
560-
mongoc_client_pool_min_size (mongoc_client_pool_t *pool, uint32_t min_pool_size)
561-
{
562-
ENTRY;
563-
BSON_ASSERT_PARAM (pool);
564-
565-
MONGOC_WARNING ("mongoc_client_pool_min_size is deprecated; its behavior does not match"
566-
" its name, and its actual behavior will likely hurt performance.");
567-
568-
bson_mutex_lock (&pool->mutex);
569-
pool->min_pool_size = min_pool_size;
570-
bson_mutex_unlock (&pool->mutex);
571-
572-
EXIT;
573-
}
574-
575539
bool
576540
mongoc_client_pool_set_apm_callbacks (mongoc_client_pool_t *pool, mongoc_apm_callbacks_t *callbacks, void *context)
577541
{

src/libmongoc/src/mongoc/mongoc-client-pool.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,6 @@ mongoc_client_pool_try_pop (mongoc_client_pool_t *pool) BSON_GNUC_WARN_UNUSED_RE
5959
MONGOC_EXPORT (void)
6060
mongoc_client_pool_max_size (mongoc_client_pool_t *pool, uint32_t max_pool_size);
6161

62-
BSON_DEPRECATED ("Setting min_pool_size on a client pool is deprecated")
63-
MONGOC_EXPORT (void) mongoc_client_pool_min_size (mongoc_client_pool_t *pool, uint32_t min_pool_size);
64-
6562
#ifdef MONGOC_ENABLE_SSL
6663
MONGOC_EXPORT (void)
6764
mongoc_client_pool_set_ssl_opts (mongoc_client_pool_t *pool, const mongoc_ssl_opt_t *opts);

src/libmongoc/src/mongoc/mongoc-uri.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -720,9 +720,8 @@ mongoc_uri_option_is_int32 (const char *key)
720720
!strcasecmp (key, MONGOC_URI_SERVERSELECTIONTIMEOUTMS) ||
721721
!strcasecmp (key, MONGOC_URI_SOCKETCHECKINTERVALMS) || !strcasecmp (key, MONGOC_URI_SOCKETTIMEOUTMS) ||
722722
!strcasecmp (key, MONGOC_URI_LOCALTHRESHOLDMS) || !strcasecmp (key, MONGOC_URI_MAXPOOLSIZE) ||
723-
!strcasecmp (key, MONGOC_URI_MAXSTALENESSSECONDS) || !strcasecmp (key, MONGOC_URI_MINPOOLSIZE) ||
724-
!strcasecmp (key, MONGOC_URI_WAITQUEUETIMEOUTMS) || !strcasecmp (key, MONGOC_URI_ZLIBCOMPRESSIONLEVEL) ||
725-
!strcasecmp (key, MONGOC_URI_SRVMAXHOSTS);
723+
!strcasecmp (key, MONGOC_URI_MAXSTALENESSSECONDS) || !strcasecmp (key, MONGOC_URI_WAITQUEUETIMEOUTMS) ||
724+
!strcasecmp (key, MONGOC_URI_ZLIBCOMPRESSIONLEVEL) || !strcasecmp (key, MONGOC_URI_SRVMAXHOSTS);
726725
}
727726

728727
bool

src/libmongoc/src/mongoc/mongoc-uri.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
#define MONGOC_URI_LOCALTHRESHOLDMS "localthresholdms"
4949
#define MONGOC_URI_MAXPOOLSIZE "maxpoolsize"
5050
#define MONGOC_URI_MAXSTALENESSSECONDS "maxstalenessseconds"
51-
#define MONGOC_URI_MINPOOLSIZE "minpoolsize"
5251
#define MONGOC_URI_READCONCERNLEVEL "readconcernlevel"
5352
#define MONGOC_URI_READPREFERENCE "readpreference"
5453
#define MONGOC_URI_READPREFERENCETAGS "readpreferencetags"

src/libmongoc/tests/json/connection_uri/additional-nonspec-tests.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,16 +174,15 @@
174174
}
175175
},
176176
{
177-
"description": "Valid connection pool options are parsed correctly, libmongoc version without maxIdleTimeMS",
178-
"uri": "mongodb://example.com/?waitQueueTimeoutMS=50000&maxPoolSize=5&minPoolSize=3",
177+
"description": "Valid connection pool options are parsed correctly, libmongoc version without maxIdleTimeMS or minPoolSize",
178+
"uri": "mongodb://example.com/?waitQueueTimeoutMS=50000&maxPoolSize=5",
179179
"valid": true,
180180
"warning": false,
181181
"hosts": null,
182182
"auth": null,
183183
"options": {
184184
"waitQueueTimeoutMS": 50000,
185-
"maxPoolSize": 5,
186-
"minPoolSize": 3
185+
"maxPoolSize": 5
187186
}
188187
}
189188
]

src/libmongoc/tests/test-mongoc-client-pool.c

Lines changed: 0 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -100,68 +100,6 @@ test_mongoc_client_pool_min_size_zero (void)
100100
mongoc_uri_destroy (uri);
101101
}
102102

103-
static void
104-
test_mongoc_client_pool_min_size_dispose (void)
105-
{
106-
mongoc_client_pool_t *pool;
107-
mongoc_client_t *client;
108-
mongoc_uri_t *uri;
109-
mongoc_client_t *c0, *c1, *c2, *c3;
110-
111-
capture_logs (true);
112-
uri = mongoc_uri_new ("mongodb://127.0.0.1/?minpoolsize=2");
113-
pool = test_framework_client_pool_new_from_uri (uri, NULL);
114-
115-
c0 = mongoc_client_pool_pop (pool);
116-
BSON_ASSERT (c0);
117-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 1);
118-
119-
c1 = mongoc_client_pool_pop (pool);
120-
BSON_ASSERT (c1);
121-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 2);
122-
123-
c2 = mongoc_client_pool_pop (pool);
124-
BSON_ASSERT (c2);
125-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 3);
126-
127-
c3 = mongoc_client_pool_pop (pool);
128-
BSON_ASSERT (c3);
129-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 4);
130-
131-
mongoc_client_pool_push (pool, c0); /* queue is [c0] */
132-
ASSERT_CMPSIZE_T (mongoc_client_pool_num_pushed (pool), ==, (size_t) 1);
133-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 4);
134-
135-
mongoc_client_pool_push (pool, c1); /* queue is [c1, c0] */
136-
ASSERT_CMPSIZE_T (mongoc_client_pool_num_pushed (pool), ==, (size_t) 2);
137-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 4);
138-
139-
mongoc_client_pool_push (pool, c2); /* queue is [c2, c1] */
140-
ASSERT_CMPSIZE_T (mongoc_client_pool_num_pushed (pool), ==, (size_t) 2);
141-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 3);
142-
143-
mongoc_client_pool_push (pool, c3); /* queue is [c3, c2] */
144-
ASSERT_CMPSIZE_T (mongoc_client_pool_num_pushed (pool), ==, (size_t) 2);
145-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 2);
146-
147-
/* BSON_ASSERT oldest client was destroyed, newest were stored */
148-
client = mongoc_client_pool_pop (pool);
149-
BSON_ASSERT (client);
150-
BSON_ASSERT (client == c3);
151-
152-
client = mongoc_client_pool_pop (pool);
153-
BSON_ASSERT (client);
154-
BSON_ASSERT (client == c2);
155-
156-
ASSERT_CMPSIZE_T (mongoc_client_pool_get_size (pool), ==, (size_t) 2);
157-
158-
/* clean up */
159-
mongoc_client_pool_push (pool, c2);
160-
mongoc_client_pool_push (pool, c3);
161-
mongoc_client_pool_destroy (pool);
162-
mongoc_uri_destroy (uri);
163-
}
164-
165103
static void
166104
test_mongoc_client_pool_set_max_size (void)
167105
{
@@ -199,50 +137,6 @@ test_mongoc_client_pool_set_max_size (void)
199137
mongoc_client_pool_destroy (pool);
200138
}
201139

202-
static void
203-
test_mongoc_client_pool_set_min_size (void)
204-
{
205-
mongoc_client_pool_t *pool;
206-
mongoc_client_t *client;
207-
mongoc_uri_t *uri;
208-
mongoc_array_t conns;
209-
int i;
210-
211-
_mongoc_array_init (&conns, sizeof client);
212-
213-
uri = mongoc_uri_new ("mongodb://127.0.0.1/?maxpoolsize=10&minpoolsize=3");
214-
capture_logs (true);
215-
pool = test_framework_client_pool_new_from_uri (uri, NULL);
216-
ASSERT_CAPTURED_LOG ("minpoolsize URI option", MONGOC_LOG_LEVEL_WARNING, "is deprecated");
217-
218-
for (i = 0; i < 10; i++) {
219-
client = mongoc_client_pool_pop (pool);
220-
BSON_ASSERT (client);
221-
_mongoc_array_append_val (&conns, client);
222-
BSON_ASSERT (mlib_cmp (mongoc_client_pool_get_size (pool), ==, i + 1));
223-
}
224-
225-
capture_logs (true);
226-
BEGIN_IGNORE_DEPRECATIONS
227-
mongoc_client_pool_min_size (pool, 7);
228-
END_IGNORE_DEPRECATIONS
229-
ASSERT_CAPTURED_LOG (
230-
"mongoc_client_pool_min_size", MONGOC_LOG_LEVEL_WARNING, "mongoc_client_pool_min_size is deprecated");
231-
232-
for (i = 0; i < 10; i++) {
233-
client = _mongoc_array_index (&conns, mongoc_client_t *, i);
234-
BSON_ASSERT (client);
235-
mongoc_client_pool_push (pool, client);
236-
}
237-
238-
BSON_ASSERT (mongoc_client_pool_get_size (pool) == 7);
239-
240-
_mongoc_array_clear (&conns);
241-
_mongoc_array_destroy (&conns);
242-
mongoc_uri_destroy (uri);
243-
mongoc_client_pool_destroy (pool);
244-
}
245-
246140
#ifndef MONGOC_ENABLE_SSL
247141
static void
248142
test_mongoc_client_pool_ssl_disabled (void)
@@ -661,9 +555,7 @@ test_client_pool_install (TestSuite *suite)
661555
TestSuite_Add (suite, "/ClientPool/try_pop", test_mongoc_client_pool_try_pop);
662556
TestSuite_Add (suite, "/ClientPool/pop_timeout", test_mongoc_client_pool_pop_timeout);
663557
TestSuite_Add (suite, "/ClientPool/min_size_zero", test_mongoc_client_pool_min_size_zero);
664-
TestSuite_Add (suite, "/ClientPool/min_size_dispose", test_mongoc_client_pool_min_size_dispose);
665558
TestSuite_Add (suite, "/ClientPool/set_max_size", test_mongoc_client_pool_set_max_size);
666-
TestSuite_Add (suite, "/ClientPool/set_min_size", test_mongoc_client_pool_set_min_size);
667559

668560
TestSuite_Add (suite, "/ClientPool/handshake", test_mongoc_client_pool_handshake);
669561

0 commit comments

Comments
 (0)