@@ -1168,6 +1168,9 @@ mongoc_topology_select_server_id (mongoc_topology_t *topology,
11681168 bool * must_use_primary ,
11691169 bson_error_t * error )
11701170{
1171+ static const char * timeout_msg =
1172+ "No suitable servers found: `serverSelectionTimeoutMS` expired" ;
1173+
11711174 mongoc_topology_scanner_t * ts ;
11721175 int r ;
11731176 int64_t local_threshold_ms ;
@@ -1179,8 +1182,10 @@ mongoc_topology_select_server_id (mongoc_topology_t *topology,
11791182 int64_t heartbeat_msec ;
11801183 uint32_t server_id ;
11811184 mc_shared_tpld td = mc_tpld_take_ref (topology );
1182- const char * timeout_msg =
1183- "No suitable servers found: `serverSelectionTimeoutMS` expired." ;
1185+
1186+ bson_string_t * topology_type = bson_string_new (". Topology type: " );
1187+ bson_string_append (topology_type ,
1188+ mongoc_topology_description_type (td .ptr ));
11841189
11851190 /* These names come from the Server Selection Spec pseudocode */
11861191 int64_t loop_start ; /* when we entered this function */
@@ -1241,15 +1246,10 @@ mongoc_topology_select_server_id (mongoc_topology_t *topology,
12411246
12421247 if (scan_ready > expire_at && !try_once ) {
12431248 /* selection timeout will expire before min heartbeat passes */
1244- bson_string_t * topology_info =
1245- _mongoc_topology_description_info (td .ptr );
1246- bson_string_t * msg = bson_string_new_printf (
1247- "%s %s" , timeout_msg , topology_info -> str );
1248- _mongoc_server_selection_error (msg -> str , & scanner_error , error );
1249+ _mongoc_server_selection_error (
1250+ timeout_msg , & scanner_error , error );
12491251
12501252 server_id = 0 ;
1251- bson_string_free (topology_info , true);
1252- bson_string_free (msg , true);
12531253 goto done ;
12541254 }
12551255
@@ -1402,6 +1402,10 @@ mongoc_topology_select_server_id (mongoc_topology_t *topology,
14021402 }
14031403
14041404done :
1405+ if (error ) {
1406+ _mongoc_error_append (error , topology_type -> str );
1407+ }
1408+ bson_string_free (topology_type , true);
14051409 mc_tpld_drop_ref (& td );
14061410 return server_id ;
14071411}
@@ -1977,7 +1981,6 @@ static void
19771981_topology_collect_errors (const mongoc_topology_description_t * td ,
19781982 bson_error_t * error_out )
19791983{
1980- // zz
19811984 const mongoc_server_description_t * server_description ;
19821985 bson_string_t * error_message ;
19831986
@@ -1993,9 +1996,8 @@ _topology_collect_errors (const mongoc_topology_description_t *td,
19931996 if (error_message -> len > 0 ) {
19941997 bson_string_append_c (error_message , ' ' );
19951998 }
1996- bson_string_append_printf (error_message ,
1997- "[%s (SERVER TYPE)]" ,
1998- server_description -> error .message );
1999+ bson_string_append_printf (
2000+ error_message , "[%s]" , server_description -> error .message );
19992001 /* The last error's code and domain wins. */
20002002 error_out -> code = error -> code ;
20012003 error_out -> domain = error -> domain ;
0 commit comments