99 end
1010 end
1111
12- let ( :retry_policy ) { Mongo ::Retryable ::RetryPolicy . new ( adaptive_retries : false ) }
12+ let ( :retry_policy ) { Mongo ::Retryable ::RetryPolicy . new }
1313
1414 let ( :client ) do
1515 instance_double ( Mongo ::Client ) . tap do |c |
@@ -94,18 +94,6 @@ def call_overload_retry(wkr, error: nil, error_count: 1, &block)
9494 end
9595
9696 describe '#modern_write_with_retry' do
97- context 'when the operation succeeds on first attempt' do
98- it 'records success and returns the result' do
99- expect ( retry_policy ) . to receive ( :record_success ) . with ( is_retry : false )
100-
101- result = worker . modern_write_with_retry ( session , server , context ) do |_conn , _txn , _ctx |
102- :ok
103- end
104-
105- expect ( result ) . to eq ( :ok )
106- end
107- end
108-
10997 context 'when an overload error occurs' do
11098 it 'enters the overload retry loop' do
11199 call_count = 0
@@ -161,21 +149,16 @@ def call_overload_retry(wkr, error: nil, error_count: 1, &block)
161149
162150 expect ( result ) . to eq ( :write_ok )
163151 end
164-
165- it 'records success on retry' do
166- expect ( retry_policy ) . to receive ( :record_success ) . with ( is_retry : true )
167- call_overload_retry ( worker ) { |_c , _t , _x | :ok }
168- end
169152 end
170153
171154 context 'with multiple overload errors' do
172155 it 'retries multiple times with backoff' do
173156 call_count = 0
174- expect ( worker ) . to receive ( :sleep ) . exactly ( 3 ) . times
157+ expect ( worker ) . to receive ( :sleep ) . twice
175158
176159 result = call_overload_retry ( worker ) do |_c , _t , _x |
177160 call_count += 1
178- raise make_overload_error if call_count < 3
161+ raise make_overload_error if call_count < 2
179162
180163 :finally_ok
181164 end
@@ -184,9 +167,9 @@ def call_overload_retry(wkr, error: nil, error_count: 1, &block)
184167 end
185168 end
186169
187- context 'when MAX_RETRIES (5 ) is exceeded' do
170+ context 'when DEFAULT_MAX_RETRIES (2 ) is exceeded' do
188171 it 'raises the last error' do
189- max = Mongo ::Retryable ::Backpressure ::MAX_RETRIES + 1
172+ max = Mongo ::Retryable ::Backpressure ::DEFAULT_MAX_RETRIES + 1
190173
191174 expect do
192175 call_overload_retry ( worker , error_count : max ) { |_c , _t , _x | :should_not_reach }
@@ -205,7 +188,7 @@ def call_overload_retry(wkr, error: nil, error_count: 1, &block)
205188 end
206189 end . to raise_error ( Mongo ::Error ::OperationFailure , /overloaded/ )
207190
208- expect ( call_count ) . to eq ( Mongo ::Retryable ::Backpressure ::MAX_RETRIES )
191+ expect ( call_count ) . to eq ( Mongo ::Retryable ::Backpressure ::DEFAULT_MAX_RETRIES )
209192 end
210193 end
211194
@@ -241,9 +224,8 @@ def call_overload_retry(wkr, error: nil, error_count: 1, &block)
241224 end
242225
243226 context 'when a non-overload retryable error occurs during overload loop' do
244- it 'records non-overload failure and continues retrying' do
227+ it 'continues retrying' do
245228 call_count = 0
246- expect ( retry_policy ) . to receive ( :record_non_overload_retry_failure ) . once
247229
248230 result = call_overload_retry ( worker ) do |_c , _t , _x |
249231 call_count += 1
@@ -256,39 +238,4 @@ def call_overload_retry(wkr, error: nil, error_count: 1, &block)
256238 end
257239 end
258240 end
259-
260- describe 'record_success on retry_write path' do
261- it 'records success after standard retry succeeds' do
262- expect ( retry_policy ) . to receive ( :record_success ) . with ( is_retry : true )
263- call_count = 0
264-
265- worker . modern_write_with_retry ( session , server , context ) do |_conn , _txn , _ctx |
266- call_count += 1
267- raise make_retryable_write_error if call_count == 1
268-
269- :ok
270- end
271- end
272- end
273-
274- describe 'adaptive retries (token bucket)' do
275- let ( :retry_policy ) { Mongo ::Retryable ::RetryPolicy . new ( adaptive_retries : true ) }
276-
277- context 'when the token bucket is exhausted' do
278- before { retry_policy . token_bucket . consume ( retry_policy . token_bucket . capacity ) }
279-
280- it 'raises the error instead of retrying' do
281- expect do
282- call_overload_retry ( worker ) { |_c , _t , _x | :no }
283- end . to raise_error ( Mongo ::Error ::OperationFailure , /overloaded/ )
284- end
285- end
286-
287- context 'when there are tokens available' do
288- it 'retries and records success' do
289- expect ( retry_policy ) . to receive ( :record_success ) . with ( is_retry : true )
290- call_overload_retry ( worker ) { |_c , _t , _x | :ok }
291- end
292- end
293- end
294241end
0 commit comments