Skip to content

Commit c863d31

Browse files
refactor: move upload-not-found retry to scan_client
Retry on 404 belongs in the HTTP client layer alongside the other retry logic, not in the scan orchestration layer. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent a8978ae commit c863d31

2 files changed

Lines changed: 10 additions & 12 deletions

File tree

cycode/cli/apps/scan/code_scanner.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import requests
77
import typer
8-
from tenacity import Retrying, retry_if_exception, stop_after_attempt, wait_random_exponential
98

109
from cycode.cli import consts
1110
from cycode.cli.apps.scan.aggregation_report import try_set_aggregation_report_url_if_needed
@@ -19,7 +18,6 @@
1918
)
2019
from cycode.cli.config import configuration_manager
2120
from cycode.cli.exceptions import custom_exceptions
22-
from cycode.cli.exceptions.custom_exceptions import RequestHttpError
2321
from cycode.cli.exceptions.handle_scan_errors import handle_scan_exception
2422
from cycode.cli.files_collector.path_documents import get_relevant_documents
2523
from cycode.cli.files_collector.sca.sca_file_collector import add_sca_dependencies_tree_documents_if_needed
@@ -314,16 +312,9 @@ def _perform_scan_v4_async(
314312
)
315313
logger.debug('Uploaded zip to presigned URL')
316314

317-
for attempt in Retrying(
318-
retry=retry_if_exception(lambda e: isinstance(e, RequestHttpError) and e.status_code == 404),
319-
stop=stop_after_attempt(3),
320-
wait=wait_random_exponential(multiplier=1, min=1, max=5),
321-
reraise=True,
322-
):
323-
with attempt:
324-
scan_async_result = cycode_client.scan_repository_from_upload_id(
325-
scan_type, upload_link.upload_id, zipped_documents, scan_parameters, is_git_diff, is_commit_range
326-
)
315+
scan_async_result = cycode_client.scan_repository_from_upload_id(
316+
scan_type, upload_link.upload_id, zipped_documents, scan_parameters, is_git_diff, is_commit_range
317+
)
327318
logger.debug(
328319
'Presigned upload scan request triggered, %s',
329320
{'scan_id': scan_async_result.scan_id, 'upload_id': upload_link.upload_id},

cycode/cyclient/scan_client.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import requests
77
from requests import Response
8+
from tenacity import retry, retry_if_exception, stop_after_attempt, wait_random_exponential
89

910
from cycode.cli import consts
1011
from cycode.cli.config import configuration_manager
@@ -166,6 +167,12 @@ def upload_to_presigned_post(
166167
raise SlowUploadConnectionError from e
167168
raise
168169

170+
@retry(
171+
retry=retry_if_exception(lambda e: isinstance(e, RequestHttpError) and e.status_code == 404),
172+
stop=stop_after_attempt(3),
173+
wait=wait_random_exponential(multiplier=1, min=1, max=5),
174+
reraise=True,
175+
)
169176
def scan_repository_from_upload_id(
170177
self,
171178
scan_type: str,

0 commit comments

Comments
 (0)