Skip to content

Commit 70e2209

Browse files
authored
CDRIVER-3940 Fix missing versioned API options in server monitor (#770)
* Rename method to indicate that the full handshake command is returned * Rename _mongoc_topology_get_ismaster * Add method to expose "hello" command without handshake information * CDRIVER-3940 Fix missing versioned API options in server monitor
1 parent 2f0dccf commit 70e2209

File tree

6 files changed

+27
-13
lines changed

6 files changed

+27
-13
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,7 @@ _mongoc_stream_run_ismaster (mongoc_cluster_t *cluster,
770770
BSON_ASSERT (cluster);
771771
BSON_ASSERT (stream);
772772

773-
command = _mongoc_topology_get_ismaster (cluster->client->topology);
773+
command = _mongoc_topology_get_handshake_cmd (cluster->client->topology);
774774

775775
if (cluster->requires_auth || negotiate_sasl_supported_mechs) {
776776
copied_command = bson_copy (command);

src/libmongoc/src/mongoc/mongoc-server-monitor.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -326,10 +326,12 @@ _server_monitor_polling_ismaster (mongoc_server_monitor_t *server_monitor,
326326
bson_error_t *error)
327327
{
328328
bson_t cmd;
329+
const bson_t *hello;
329330
bool ret;
330331

331-
bson_init (&cmd);
332-
bson_append_int32 (&cmd, "isMaster", 8, 1);
332+
hello = _mongoc_topology_scanner_get_hello_cmd (server_monitor->topology->scanner);
333+
bson_copy_to (hello, &cmd);
334+
333335
_server_monitor_append_cluster_time (server_monitor, &cmd);
334336
ret = _server_monitor_send_and_recv_opquery (
335337
server_monitor, &cmd, ismaster_reply, error);
@@ -603,10 +605,13 @@ _server_monitor_awaitable_ismaster (mongoc_server_monitor_t *server_monitor,
603605
bool *cancelled,
604606
bson_error_t *error)
605607
{
606-
bson_t cmd = BSON_INITIALIZER;
608+
bson_t cmd;
609+
const bson_t *hello;
607610
bool ret = false;
608611

609-
bson_append_int32 (&cmd, "isMaster", 8, 1);
612+
hello = _mongoc_topology_scanner_get_hello_cmd (server_monitor->topology->scanner);
613+
bson_copy_to (hello, &cmd);
614+
610615
_server_monitor_append_cluster_time (server_monitor, &cmd);
611616
bson_append_document (&cmd, "topologyVersion", 15, topology_version);
612617
bson_append_int32 (
@@ -775,7 +780,7 @@ _server_monitor_setup_connection (mongoc_server_monitor_t *server_monitor,
775780
/* Update the start time just before the handshake. */
776781
*start_us = _now_us ();
777782
/* Perform handshake. */
778-
handshake = _mongoc_topology_get_ismaster (server_monitor->topology);
783+
handshake = _mongoc_topology_get_handshake_cmd (server_monitor->topology);
779784
bson_destroy (&cmd);
780785
bson_copy_to (handshake, &cmd);
781786
_server_monitor_append_cluster_time (server_monitor, &cmd);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ void
197197
_mongoc_topology_do_blocking_scan (mongoc_topology_t *topology,
198198
bson_error_t *error);
199199
const bson_t *
200-
_mongoc_topology_get_ismaster (mongoc_topology_t *topology);
200+
_mongoc_topology_get_handshake_cmd (mongoc_topology_t *topology);
201201
void
202202
_mongoc_topology_request_scan (mongoc_topology_t *topology);
203203

src/libmongoc/src/mongoc/mongoc-topology-scanner-private.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,10 @@ _mongoc_topology_scanner_get_speculative_auth_mechanism (
194194
const mongoc_uri_t *uri);
195195

196196
const bson_t *
197-
_mongoc_topology_scanner_get_ismaster (mongoc_topology_scanner_t *ts);
197+
_mongoc_topology_scanner_get_hello_cmd (mongoc_topology_scanner_t *ts);
198+
199+
const bson_t *
200+
_mongoc_topology_scanner_get_handshake_cmd (mongoc_topology_scanner_t *ts);
198201

199202
bool
200203
mongoc_topology_scanner_has_node_for_host (mongoc_topology_scanner_t *ts,

src/libmongoc/src/mongoc/mongoc-topology-scanner.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,12 +273,18 @@ _build_ismaster_with_handshake (mongoc_topology_scanner_t *ts)
273273
return res;
274274
}
275275

276+
const bson_t *
277+
_mongoc_topology_scanner_get_hello_cmd (mongoc_topology_scanner_t *ts)
278+
{
279+
return &ts->ismaster_cmd;
280+
}
281+
276282
/* Caller must lock topology->mutex to protect ismaster_cmd_with_handshake. This
277283
* is called at the start of the scan in _mongoc_topology_run_background, when a
278284
* node is added in _mongoc_topology_reconcile_add_nodes, or when running an
279285
* ismaster directly on a node in _mongoc_stream_run_ismaster. */
280286
const bson_t *
281-
_mongoc_topology_scanner_get_ismaster (mongoc_topology_scanner_t *ts)
287+
_mongoc_topology_scanner_get_handshake_cmd (mongoc_topology_scanner_t *ts)
282288
{
283289
/* If this is the first time using the node or if it's the first time
284290
* using it after a failure, build handshake doc */
@@ -311,7 +317,7 @@ _begin_ismaster_cmd (mongoc_topology_scanner_node_t *node,
311317
/* The node's been used before and not failed recently */
312318
bson_copy_to (&ts->ismaster_cmd, &cmd);
313319
} else {
314-
bson_copy_to (_mongoc_topology_scanner_get_ismaster (ts), &cmd);
320+
bson_copy_to (_mongoc_topology_scanner_get_handshake_cmd (ts), &cmd);
315321
}
316322

317323
if (node->ts->negotiate_sasl_supported_mechs &&

src/libmongoc/src/mongoc/mongoc-topology.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,7 +1578,7 @@ _mongoc_topology_end_sessions_cmd (mongoc_topology_t *topology, bson_t *cmd)
15781578
/*
15791579
*--------------------------------------------------------------------------
15801580
*
1581-
* _mongoc_topology_get_ismaster --
1581+
* _mongoc_topology_get_handshake_cmd --
15821582
*
15831583
* Locks topology->mutex and retrieves (possibly constructing) the
15841584
* handshake on the topology scanner.
@@ -1589,11 +1589,11 @@ _mongoc_topology_end_sessions_cmd (mongoc_topology_t *topology, bson_t *cmd)
15891589
*--------------------------------------------------------------------------
15901590
*/
15911591
const bson_t *
1592-
_mongoc_topology_get_ismaster (mongoc_topology_t *topology)
1592+
_mongoc_topology_get_handshake_cmd (mongoc_topology_t *topology)
15931593
{
15941594
const bson_t *cmd;
15951595
bson_mutex_lock (&topology->mutex);
1596-
cmd = _mongoc_topology_scanner_get_ismaster (topology->scanner);
1596+
cmd = _mongoc_topology_scanner_get_handshake_cmd (topology->scanner);
15971597
bson_mutex_unlock (&topology->mutex);
15981598
return cmd;
15991599
}

0 commit comments

Comments
 (0)