@@ -1402,9 +1402,19 @@ mongoc_server_monitor_run (mongoc_server_monitor_t *server_monitor)
1402
1402
bson_mutex_lock (& server_monitor -> shared .mutex );
1403
1403
if (server_monitor -> shared .state == MONGOC_THREAD_OFF ) {
1404
1404
server_monitor -> is_rtt = false;
1405
- server_monitor -> shared .state = MONGOC_THREAD_RUNNING ;
1406
- mcommon_thread_create (
1405
+ int ret = mcommon_thread_create (
1407
1406
& server_monitor -> thread , _server_monitor_thread , server_monitor );
1407
+ if (ret == 0 ) {
1408
+ server_monitor -> shared .state = MONGOC_THREAD_RUNNING ;
1409
+ } else {
1410
+ char errmsg_buf [BSON_ERROR_BUFFER_SIZE ];
1411
+ char * errmsg = bson_strerror_r (ret , errmsg_buf , sizeof errmsg_buf );
1412
+ _server_monitor_log (server_monitor ,
1413
+ MONGOC_LOG_LEVEL_ERROR ,
1414
+ "Failed to start monitoring thread. This server "
1415
+ "may not be selectable. Error: %s" ,
1416
+ errmsg );
1417
+ }
1408
1418
}
1409
1419
bson_mutex_unlock (& server_monitor -> shared .mutex );
1410
1420
}
@@ -1415,9 +1425,19 @@ mongoc_server_monitor_run_as_rtt (mongoc_server_monitor_t *server_monitor)
1415
1425
bson_mutex_lock (& server_monitor -> shared .mutex );
1416
1426
if (server_monitor -> shared .state == MONGOC_THREAD_OFF ) {
1417
1427
server_monitor -> is_rtt = true;
1418
- server_monitor -> shared .state = MONGOC_THREAD_RUNNING ;
1419
- mcommon_thread_create (
1428
+ int ret = mcommon_thread_create (
1420
1429
& server_monitor -> thread , _server_monitor_rtt_thread , server_monitor );
1430
+ if (ret == 0 ) {
1431
+ server_monitor -> shared .state = MONGOC_THREAD_RUNNING ;
1432
+ } else {
1433
+ char errmsg_buf [BSON_ERROR_BUFFER_SIZE ];
1434
+ char * errmsg = bson_strerror_r (ret , errmsg_buf , sizeof errmsg_buf );
1435
+ _server_monitor_log (
1436
+ server_monitor ,
1437
+ MONGOC_LOG_LEVEL_ERROR ,
1438
+ "Failed to start Round-Trip Time monitoring thread. Error: %s" ,
1439
+ errmsg );
1440
+ }
1421
1441
}
1422
1442
bson_mutex_unlock (& server_monitor -> shared .mutex );
1423
1443
}
0 commit comments