Skip to content

Commit 84dc233

Browse files
committed
Don't update initial server description in server monitor
1 parent bbbf582 commit 84dc233

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

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

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ _server_monitor_send_and_recv_opquery (mongoc_server_monitor_t *server_monitor,
322322

323323
static bool
324324
_server_monitor_polling_hello (mongoc_server_monitor_t *server_monitor,
325+
bool hello_ok,
325326
bson_t *hello_response,
326327
bson_error_t *error)
327328
{
@@ -330,7 +331,7 @@ _server_monitor_polling_hello (mongoc_server_monitor_t *server_monitor,
330331
bool ret;
331332

332333
hello = _mongoc_topology_scanner_get_monitoring_cmd (
333-
server_monitor->topology->scanner, server_monitor->description->hello_ok);
334+
server_monitor->topology->scanner, hello_ok);
334335
bson_copy_to (hello, &cmd);
335336

336337
_server_monitor_append_cluster_time (server_monitor, &cmd);
@@ -600,7 +601,7 @@ _server_monitor_awaitable_hello_recv (mongoc_server_monitor_t *server_monitor,
600601
*/
601602
static bool
602603
_server_monitor_awaitable_hello (mongoc_server_monitor_t *server_monitor,
603-
const bson_t *topology_version,
604+
const mongoc_server_description_t *description,
604605
bson_t *hello_response,
605606
bool *cancelled,
606607
bson_error_t *error)
@@ -610,11 +611,11 @@ _server_monitor_awaitable_hello (mongoc_server_monitor_t *server_monitor,
610611
bool ret = false;
611612

612613
hello = _mongoc_topology_scanner_get_monitoring_cmd (
613-
server_monitor->topology->scanner, server_monitor->description->hello_ok);
614+
server_monitor->topology->scanner, description->hello_ok);
614615
bson_copy_to (hello, &cmd);
615616

616617
_server_monitor_append_cluster_time (server_monitor, &cmd);
617-
bson_append_document (&cmd, "topologyVersion", 15, topology_version);
618+
bson_append_document (&cmd, "topologyVersion", 15, &description->topology_version);
618619
bson_append_int32 (
619620
&cmd, "maxAwaitTimeMS", 14, server_monitor->heartbeat_frequency_ms);
620621
bson_append_utf8 (&cmd, "$db", 3, "admin", 5);
@@ -861,7 +862,7 @@ mongoc_server_monitor_check_server (
861862
MONITOR_LOG (server_monitor, "awaitable hello");
862863
ret = _server_monitor_awaitable_hello (
863864
server_monitor,
864-
&previous_description->topology_version,
865+
previous_description,
865866
&hello_response,
866867
cancelled,
867868
&error);
@@ -872,7 +873,7 @@ mongoc_server_monitor_check_server (
872873
awaited = false;
873874
_server_monitor_heartbeat_started (server_monitor, awaited);
874875
ret =
875-
_server_monitor_polling_hello (server_monitor, &hello_response, &error);
876+
_server_monitor_polling_hello (server_monitor, previous_description->hello_ok, &hello_response, &error);
876877

877878
exit:
878879
duration_us = _now_us () - start_us;
@@ -1052,16 +1053,6 @@ static BSON_THREAD_FUN (_server_monitor_thread, server_monitor_void)
10521053
continue;
10531054
}
10541055

1055-
/* Update the server description of the server monitor to ensure we're
1056-
* running the correct heartbeat command in the future */
1057-
if (description->has_hello_response) {
1058-
mongoc_server_description_handle_hello (
1059-
server_monitor->description,
1060-
&description->last_hello_response,
1061-
description->round_trip_time_msec,
1062-
&description->error);
1063-
}
1064-
10651056
_server_monitor_update_topology_description (server_monitor, description);
10661057

10671058
/* Immediately proceed to the next check if the previous response was
@@ -1102,6 +1093,7 @@ static BSON_THREAD_FUN (_server_monitor_thread, server_monitor_void)
11021093

11031094
static bool
11041095
_server_monitor_ping_server (mongoc_server_monitor_t *server_monitor,
1096+
bool hello_ok,
11051097
int64_t *rtt_ms)
11061098
{
11071099
bool ret = false;
@@ -1121,7 +1113,7 @@ _server_monitor_ping_server (mongoc_server_monitor_t *server_monitor,
11211113
if (server_monitor->stream) {
11221114
MONITOR_LOG (server_monitor, "rtt polling hello");
11231115
ret = _server_monitor_polling_hello (
1124-
server_monitor, &hello_response, &error);
1116+
server_monitor, hello_ok, &hello_response, &error);
11251117
if (ret) {
11261118
*rtt_ms = (_now_us () - start_us) / 1000;
11271119
}
@@ -1137,12 +1129,14 @@ _server_monitor_ping_server (mongoc_server_monitor_t *server_monitor,
11371129
static BSON_THREAD_FUN (_server_monitor_rtt_thread, server_monitor_void)
11381130
{
11391131
mongoc_server_monitor_t *server_monitor;
1132+
mongoc_server_description_t *sd;
11401133

11411134
server_monitor = (mongoc_server_monitor_t *) server_monitor_void;
11421135

11431136
while (true) {
11441137
int64_t rtt_ms;
11451138
bson_error_t error;
1139+
bool hello_ok;
11461140

11471141
bson_mutex_lock (&server_monitor->shared.mutex);
11481142
if (server_monitor->shared.state != MONGOC_THREAD_RUNNING) {
@@ -1151,10 +1145,14 @@ static BSON_THREAD_FUN (_server_monitor_rtt_thread, server_monitor_void)
11511145
}
11521146
bson_mutex_unlock (&server_monitor->shared.mutex);
11531147

1154-
_server_monitor_ping_server (server_monitor, &rtt_ms);
1155-
if (rtt_ms != MONGOC_RTT_UNSET) {
1156-
mongoc_server_description_t *sd;
1148+
sd = mongoc_topology_description_server_by_id (
1149+
&server_monitor->topology->description,
1150+
server_monitor->description->id,
1151+
&error);
1152+
hello_ok = sd ? sd->hello_ok : false;
11571153

1154+
_server_monitor_ping_server (server_monitor, hello_ok, &rtt_ms);
1155+
if (rtt_ms != MONGOC_RTT_UNSET) {
11581156
bson_mutex_lock (&server_monitor->topology->mutex);
11591157
sd = mongoc_topology_description_server_by_id (
11601158
&server_monitor->topology->description,

0 commit comments

Comments
 (0)