@@ -433,6 +433,7 @@ mongoc_cluster_run_command_monitored (mongoc_cluster_t *cluster,
433
433
{
434
434
bool retval ;
435
435
uint32_t request_id = ++ cluster -> request_id ;
436
+ uint32_t server_id ;
436
437
mongoc_apm_callbacks_t * callbacks ;
437
438
mongoc_apm_command_started_t started_event ;
438
439
mongoc_apm_command_succeeded_t succeeded_event ;
@@ -444,6 +445,7 @@ mongoc_cluster_run_command_monitored (mongoc_cluster_t *cluster,
444
445
int32_t compressor_id ;
445
446
446
447
server_stream = cmd -> server_stream ;
448
+ server_id = server_stream -> sd -> id ;
447
449
compressor_id = mongoc_server_description_compressor_id (server_stream -> sd );
448
450
449
451
callbacks = & cluster -> client -> apm_callbacks ;
@@ -476,7 +478,7 @@ mongoc_cluster_run_command_monitored (mongoc_cluster_t *cluster,
476
478
request_id ,
477
479
cmd -> operation_id ,
478
480
& server_stream -> sd -> host ,
479
- server_stream -> sd -> id ,
481
+ server_id ,
480
482
cluster -> client -> apm_context );
481
483
482
484
callbacks -> succeeded (& succeeded_event );
@@ -490,18 +492,21 @@ mongoc_cluster_run_command_monitored (mongoc_cluster_t *cluster,
490
492
request_id ,
491
493
cmd -> operation_id ,
492
494
& server_stream -> sd -> host ,
493
- server_stream -> sd -> id ,
495
+ server_id ,
494
496
cluster -> client -> apm_context );
495
497
496
498
callbacks -> failed (& failed_event );
497
499
mongoc_apm_command_failed_cleanup (& failed_event );
498
500
}
499
501
if (!retval ) {
500
- handle_not_master_error (cluster , server_stream -> sd -> id , error );
502
+ handle_not_master_error (cluster , server_id , error );
501
503
}
502
504
if (reply == & reply_local ) {
503
505
bson_destroy (& reply_local );
504
506
}
507
+
508
+ _mongoc_topology_update_last_used (cluster -> client -> topology , server_id );
509
+
505
510
return retval ;
506
511
}
507
512
@@ -556,6 +561,9 @@ mongoc_cluster_run_command_private (mongoc_cluster_t *cluster,
556
561
handle_not_master_error (cluster , server_stream -> sd -> id , error );
557
562
}
558
563
564
+ _mongoc_topology_update_last_used (cluster -> client -> topology ,
565
+ server_stream -> sd -> id );
566
+
559
567
return retval ;
560
568
}
561
569
@@ -2248,7 +2256,9 @@ mongoc_cluster_check_interval (mongoc_cluster_t *cluster, uint32_t server_id)
2248
2256
*
2249
2257
* mongoc_cluster_legacy_rpc_sendv_to_server --
2250
2258
*
2251
- * Sends the given RPCs to the given server.
2259
+ * Sends the given RPCs to the given server. Used for OP_QUERY cursors,
2260
+ * OP_KILLCURSORS, and legacy writes with OP_INSERT, OP_UPDATE, and
2261
+ * OP_DELETE. This function is *not* in the OP_QUERY command path.
2252
2262
*
2253
2263
* Returns:
2254
2264
* True if successful.
@@ -2270,7 +2280,6 @@ mongoc_cluster_legacy_rpc_sendv_to_server (
2270
2280
bson_error_t * error )
2271
2281
{
2272
2282
uint32_t server_id ;
2273
- mongoc_topology_scanner_node_t * scanner_node ;
2274
2283
int32_t max_msg_size ;
2275
2284
bool ret = false;
2276
2285
int32_t compressor_id = 0 ;
@@ -2326,14 +2335,7 @@ mongoc_cluster_legacy_rpc_sendv_to_server (
2326
2335
GOTO (done );
2327
2336
}
2328
2337
2329
- if (cluster -> client -> topology -> single_threaded ) {
2330
- scanner_node = mongoc_topology_scanner_get_node (
2331
- cluster -> client -> topology -> scanner , server_id );
2332
-
2333
- if (scanner_node ) {
2334
- scanner_node -> last_used = bson_get_monotonic_time ();
2335
- }
2336
- }
2338
+ _mongoc_topology_update_last_used (cluster -> client -> topology , server_id );
2337
2339
2338
2340
ret = true;
2339
2341
0 commit comments