Skip to content

Commit 4e2837a

Browse files
committed
fix: form retry not working by no resume recorder
1 parent dbc5668 commit 4e2837a

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

qiniu/services/storage/uploaders/_default_retrier.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ def get_default_retrier(
185185
"""
186186
retry_policies = []
187187
upload_service_names = [ServiceName.UP]
188+
handle_change_region = None
188189

189190
if accelerate_uploading:
190191
retry_policies.append(AccUnavailableRetryPolicy())
@@ -196,14 +197,15 @@ def get_default_retrier(
196197
record_delete_handler=progress_record.delete,
197198
record_exists_handler=progress_record.exists
198199
))
200+
handle_change_region = lambda _: progress_record.delete()
199201

200202
retry_policies += [
201203
EndpointsRetryPolicy(skip_init_context=True),
202204
RegionsRetryPolicy(
203205
regions_provider=regions_provider,
204206
service_names=upload_service_names,
205207
preferred_endpoints_provider=preferred_endpoints_provider,
206-
on_change_region=lambda _: progress_record.delete()
208+
on_change_region=handle_change_region
207209
)
208210
]
209211

tests/cases/test_services/test_storage/test_uploader.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,28 @@ def test_put_file_with_callback(
346346
assert ret['x-qn-meta']['name'] == 'qiniu'
347347
assert ret['x-qn-meta']['age'] == '18'
348348

349+
@pytest.mark.parametrize('temp_file', [64 * KB, 10 * MB], indirect=True)
350+
def test_put_file_with_regions_retry(
351+
self,
352+
qn_auth,
353+
bucket_name,
354+
temp_file,
355+
regions_with_fake_endpoints,
356+
get_remote_object_headers_and_md5,
357+
get_key
358+
):
359+
key = get_key('test_file_with_form_regions_retry')
360+
token = qn_auth.upload_token(bucket_name, key)
361+
ret, info = put_file(
362+
token,
363+
key,
364+
temp_file.path,
365+
regions=regions_with_fake_endpoints
366+
)
367+
_, actual_md5 = get_remote_object_headers_and_md5(key=key)
368+
assert ret['key'] == key
369+
assert actual_md5 == temp_file.md5
370+
349371
def test_put_data_with_callback(
350372
self,
351373
qn_auth,

0 commit comments

Comments
 (0)