@@ -2794,6 +2794,7 @@ _mongoc_cluster_select_server_id (mongoc_client_session_t *cs,
2794
2794
mongoc_ss_optype_t optype ,
2795
2795
const mongoc_read_prefs_t * read_prefs ,
2796
2796
bool * must_use_primary ,
2797
+ const mongoc_deprioritized_servers_t * ds ,
2797
2798
bson_error_t * error )
2798
2799
{
2799
2800
BSON_ASSERT (cs || true);
@@ -2808,14 +2809,14 @@ _mongoc_cluster_select_server_id (mongoc_client_session_t *cs,
2808
2809
server_id = cs -> server_id ;
2809
2810
if (!server_id ) {
2810
2811
server_id = mongoc_topology_select_server_id (
2811
- topology , optype , read_prefs , must_use_primary , error );
2812
+ topology , optype , read_prefs , must_use_primary , ds , error );
2812
2813
if (server_id ) {
2813
2814
_mongoc_client_session_pin (cs , server_id );
2814
2815
}
2815
2816
}
2816
2817
} else {
2817
2818
server_id = mongoc_topology_select_server_id (
2818
- topology , optype , read_prefs , must_use_primary , error );
2819
+ topology , optype , read_prefs , must_use_primary , ds , error );
2819
2820
/* Transactions Spec: Additionally, any non-transaction operation using a
2820
2821
* pinned ClientSession MUST unpin the session and the operation MUST
2821
2822
* perform normal server selection. */
@@ -2851,6 +2852,7 @@ _mongoc_cluster_stream_for_optype (mongoc_cluster_t *cluster,
2851
2852
const mongoc_read_prefs_t * read_prefs ,
2852
2853
mongoc_client_session_t * cs ,
2853
2854
bool is_retryable ,
2855
+ const mongoc_deprioritized_servers_t * ds ,
2854
2856
bson_t * reply ,
2855
2857
bson_error_t * error )
2856
2858
{
@@ -2870,7 +2872,7 @@ _mongoc_cluster_stream_for_optype (mongoc_cluster_t *cluster,
2870
2872
BSON_ASSERT (cluster );
2871
2873
2872
2874
server_id = _mongoc_cluster_select_server_id (
2873
- cs , topology , optype , read_prefs , & must_use_primary , error );
2875
+ cs , topology , optype , read_prefs , & must_use_primary , ds , error );
2874
2876
2875
2877
if (!server_id ) {
2876
2878
if (reply ) {
@@ -2883,7 +2885,7 @@ _mongoc_cluster_stream_for_optype (mongoc_cluster_t *cluster,
2883
2885
if (!mongoc_cluster_check_interval (cluster , server_id )) {
2884
2886
/* Server Selection Spec: try once more */
2885
2887
server_id = _mongoc_cluster_select_server_id (
2886
- cs , topology , optype , read_prefs , & must_use_primary , error );
2888
+ cs , topology , optype , read_prefs , & must_use_primary , ds , error );
2887
2889
2888
2890
if (!server_id ) {
2889
2891
if (reply ) {
@@ -2967,6 +2969,7 @@ mongoc_server_stream_t *
2967
2969
mongoc_cluster_stream_for_reads (mongoc_cluster_t * cluster ,
2968
2970
const mongoc_read_prefs_t * read_prefs ,
2969
2971
mongoc_client_session_t * cs ,
2972
+ const mongoc_deprioritized_servers_t * ds ,
2970
2973
bson_t * reply ,
2971
2974
bson_error_t * error )
2972
2975
{
@@ -2979,21 +2982,28 @@ mongoc_cluster_stream_for_reads (mongoc_cluster_t *cluster,
2979
2982
const bool is_retryable = mongoc_uri_get_option_as_bool (
2980
2983
cluster -> uri , MONGOC_URI_RETRYREADS , MONGOC_DEFAULT_RETRYREADS );
2981
2984
2982
- return _mongoc_cluster_stream_for_optype (
2983
- cluster , MONGOC_SS_READ , prefs_override , cs , is_retryable , reply , error );
2985
+ return _mongoc_cluster_stream_for_optype (cluster ,
2986
+ MONGOC_SS_READ ,
2987
+ prefs_override ,
2988
+ cs ,
2989
+ is_retryable ,
2990
+ ds ,
2991
+ reply ,
2992
+ error );
2984
2993
}
2985
2994
2986
2995
mongoc_server_stream_t *
2987
2996
mongoc_cluster_stream_for_writes (mongoc_cluster_t * cluster ,
2988
2997
mongoc_client_session_t * cs ,
2998
+ const mongoc_deprioritized_servers_t * ds ,
2989
2999
bson_t * reply ,
2990
3000
bson_error_t * error )
2991
3001
{
2992
3002
const bool is_retryable = mongoc_uri_get_option_as_bool (
2993
3003
cluster -> uri , MONGOC_URI_RETRYWRITES , MONGOC_DEFAULT_RETRYWRITES );
2994
3004
2995
3005
return _mongoc_cluster_stream_for_optype (
2996
- cluster , MONGOC_SS_WRITE , NULL , cs , is_retryable , reply , error );
3006
+ cluster , MONGOC_SS_WRITE , NULL , cs , is_retryable , ds , reply , error );
2997
3007
}
2998
3008
2999
3009
mongoc_server_stream_t *
@@ -3015,6 +3025,7 @@ mongoc_cluster_stream_for_aggr_with_write (
3015
3025
prefs_override ,
3016
3026
cs ,
3017
3027
is_retryable ,
3028
+ NULL ,
3018
3029
reply ,
3019
3030
error );
3020
3031
}
0 commit comments