@@ -74,7 +74,11 @@ def write_with_retry(write_concern, ending_transaction: false, context:, &block)
7474 # If we are here, session is not nil. A session being nil would have
7575 # failed retry_write_allowed? check.
7676
77- server = select_server ( cluster , ServerSelector . primary , session )
77+ server = select_server (
78+ cluster , ServerSelector . primary ,
79+ session ,
80+ remaining_timeout_ms : context . remaining_timeout_ms
81+ )
7882
7983 unless ending_transaction || server . retry_writes?
8084 return legacy_write_with_retry ( server , context : context , &block )
@@ -177,8 +181,16 @@ def legacy_write_with_retry(server = nil, context:)
177181 attempt = 0
178182 begin
179183 attempt += 1
180- server ||= select_server ( cluster , ServerSelector . primary , session )
181- server . with_connection ( connection_global_id : context . connection_global_id ) do |connection |
184+ server ||= select_server (
185+ cluster ,
186+ ServerSelector . primary ,
187+ session ,
188+ remaining_timeout_ms : context . remaining_timeout_ms
189+ )
190+ server . with_connection (
191+ connection_global_id : context . connection_global_id ,
192+ context : context
193+ ) do |connection |
182194 # Legacy retries do not use txn_num
183195 yield connection , nil , context . dup
184196 end
@@ -220,7 +232,10 @@ def modern_write_with_retry(session, server, context, &block)
220232 txn_num = nil
221233 connection_succeeded = false
222234
223- server . with_connection ( connection_global_id : context . connection_global_id ) do |connection |
235+ server . with_connection (
236+ connection_global_id : context . connection_global_id ,
237+ context : context
238+ ) do |connection |
224239 connection_succeeded = true
225240
226241 session . materialize_if_needed
@@ -263,7 +278,13 @@ def retry_write(original_error, txn_num, context:, failed_server: nil, &block)
263278 # server description and/or topology as necessary (specifically,
264279 # a socket error or a not master error should have marked the respective
265280 # server unknown). Here we just need to wait for server selection.
266- server = select_server ( cluster , ServerSelector . primary , session , failed_server )
281+ server = select_server (
282+ cluster ,
283+ ServerSelector . primary ,
284+ session ,
285+ failed_server ,
286+ remaining_timeout_ms : context . remaining_timeout_ms
287+ )
267288
268289 unless server . retry_writes?
269290 # Do not need to add "modern retry" here, it should already be on
0 commit comments