Skip to content

Commit e188788

Browse files
committed
new mongoc_client_update_sockettimeoutms()
so multiple pools are not necessary to accomodate different timeouts
1 parent 3e942aa commit e188788

File tree

7 files changed

+84
-2
lines changed

7 files changed

+84
-2
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
:man_page: mongoc_client_reset_sockettimeoutms
2+
3+
mongoc_client_reset_sockettimeoutms()
4+
=======================
5+
6+
Synopsis
7+
--------
8+
9+
.. code-block:: c
10+
11+
void
12+
mongoc_client_reset_sockettimeoutms (mongoc_client_t *client);
13+
14+
Reset the sockettimeoutms of the mongoc_cluster_t object associated with the given mongoc_client_t object back to the default value.
15+
Primarily used inside mongoc_client_pool_push() when returning a client to a connection pool.
16+
17+
Parameters
18+
----------
19+
20+
* ``client``: A :symbol:`mongoc_client_t`.
21+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
:man_page: mongoc_client_update_sockettimeoutms
2+
3+
mongoc_client_update_sockettimeoutms()
4+
=======================
5+
6+
Synopsis
7+
--------
8+
9+
.. code-block:: c
10+
11+
void
12+
mongoc_client_update_sockettimeoutms (mongoc_client_t *client, const uint32_t timeoutms);
13+
14+
Change the sockettimeoutms of the mongoc_cluster_t object associated with the given mongoc_client_t object.
15+
16+
Parameters
17+
----------
18+
19+
* ``client``: A :symbol:`mongoc_client_t`.
20+
* ``timeoutms``: The requested timeout value in milliseconds.
21+

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,9 @@ mongoc_client_pool_push (mongoc_client_pool_t *pool, mongoc_client_t *client)
366366
BSON_ASSERT_PARAM (pool);
367367
BSON_ASSERT_PARAM (client);
368368

369+
/* reset sockettimeoutms to the default in case it was changed with mongoc_client_update_sockettimeoutms() */
370+
mongoc_client_reset_sockettimeoutms (client);
371+
369372
bson_mutex_lock (&pool->mutex);
370373
_mongoc_queue_push_head (&pool->queue, client);
371374

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,6 +1125,19 @@ mongoc_client_destroy (mongoc_client_t *client)
11251125
}
11261126

11271127

1128+
void mongoc_client_update_sockettimeoutms (mongoc_client_t *client,
1129+
const uint32_t timeoutms)
1130+
{
1131+
BSON_ASSERT_PARAM (client);
1132+
mongoc_cluster_update_sockettimeoutms (&client->cluster, timeoutms);
1133+
}
1134+
1135+
void mongoc_client_reset_sockettimeoutms (mongoc_client_t *client)
1136+
{
1137+
BSON_ASSERT_PARAM (client);
1138+
mongoc_cluster_reset_sockettimeoutms (&client->cluster);
1139+
}
1140+
11281141
/*
11291142
*--------------------------------------------------------------------------
11301143
*

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ MONGOC_EXPORT (mongoc_client_t *)
107107
mongoc_client_new_from_uri (const mongoc_uri_t *uri) BSON_GNUC_WARN_UNUSED_RESULT;
108108
MONGOC_EXPORT (mongoc_client_t *)
109109
mongoc_client_new_from_uri_with_error (const mongoc_uri_t *uri, bson_error_t *error) BSON_GNUC_WARN_UNUSED_RESULT;
110+
MONGOC_EXPORT (void)
111+
mongoc_client_update_sockettimeoutms (mongoc_client_t *client, const uint32_t timeoutms);
112+
MONGOC_EXPORT (void)
113+
mongoc_client_reset_sockettimeoutms (mongoc_client_t *client);
110114
MONGOC_EXPORT (const mongoc_uri_t *)
111115
mongoc_client_get_uri (const mongoc_client_t *client);
112116
MONGOC_EXPORT (void)

src/libmongoc/src/mongoc/mongoc-cluster-private.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@ mongoc_cluster_init (mongoc_cluster_t *cluster, const mongoc_uri_t *uri, void *c
7272
void
7373
mongoc_cluster_destroy (mongoc_cluster_t *cluster);
7474

75+
void
76+
mongoc_cluster_update_sockettimeoutms (mongoc_cluster_t *cluster,
77+
const uint32_t sockettimeoutms);
78+
79+
void
80+
mongoc_cluster_reset_sockettimeoutms (mongoc_cluster_t *cluster);
81+
7582
void
7683
mongoc_cluster_disconnect_node (mongoc_cluster_t *cluster, uint32_t id);
7784

src/libmongoc/src/mongoc/mongoc-cluster.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2511,8 +2511,7 @@ mongoc_cluster_init (mongoc_cluster_t *cluster, const mongoc_uri_t *uri, void *c
25112511
cluster->client = (mongoc_client_t *) client;
25122512
cluster->requires_auth = (mongoc_uri_get_username (uri) || mongoc_uri_get_auth_mechanism (uri));
25132513

2514-
cluster->sockettimeoutms =
2515-
mongoc_uri_get_option_as_int32 (uri, MONGOC_URI_SOCKETTIMEOUTMS, MONGOC_DEFAULT_SOCKETTIMEOUTMS);
2514+
mongoc_cluster_reset_sockettimeoutms (cluster);
25162515

25172516
cluster->socketcheckintervalms =
25182517
mongoc_uri_get_option_as_int32 (uri, MONGOC_URI_SOCKETCHECKINTERVALMS, MONGOC_TOPOLOGY_SOCKET_CHECK_INTERVAL_MS);
@@ -2560,6 +2559,20 @@ mongoc_cluster_destroy (mongoc_cluster_t *cluster) /* INOUT */
25602559
EXIT;
25612560
}
25622561

2562+
void mongoc_cluster_update_sockettimeoutms (mongoc_cluster_t *cluster,
2563+
const uint32_t timeoutms)
2564+
{
2565+
BSON_ASSERT_PARAM (cluster);
2566+
cluster->sockettimeoutms = timeoutms;
2567+
}
2568+
2569+
void mongoc_cluster_reset_sockettimeoutms (mongoc_cluster_t *cluster)
2570+
{
2571+
BSON_ASSERT_PARAM (cluster);
2572+
cluster->sockettimeoutms =
2573+
mongoc_uri_get_option_as_int32 (cluster->uri, MONGOC_URI_SOCKETTIMEOUTMS, MONGOC_DEFAULT_SOCKETTIMEOUTMS);
2574+
}
2575+
25632576
static uint32_t
25642577
_mongoc_cluster_select_server_id (mongoc_client_session_t *cs,
25652578
mongoc_topology_t *topology,

0 commit comments

Comments
 (0)