-
Notifications
You must be signed in to change notification settings - Fork 470
ci: add setup downloads retries (#15398) #15598
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 4.0
Are you sure you want to change the base?
Conversation
- Added exponential backoff retry decorator to Python downloads (libddwaf binaries, dedup_headers tool) with 10 retries and configurable delays - Increased Cargo retry count from 3 to 10 for all Rust dependency downloads - Added 10-minute download timeout + 2-minute inactivity timeout to all CMake FetchContent operations - Made retry behavior tunable via DD_DOWNLOAD_MAX_RETRIES, DD_DOWNLOAD_INITIAL_DELAY, and DD_DOWNLOAD_MAX_DELAY environment variables - Automatically retries on HTTP 429 (rate limit), 502/503/504 (server errors), and network timeouts <!-- Describe your testing strategy or note what tests are included --> <!-- Note any risks associated with this change, or "None" if no risks --> <!-- Any other information that would be helpful for reviewers --> (cherry picked from commit b8614b5)
|
|
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 249 ± 5 ms. The average import time from base is: 248 ± 4 ms. The import time difference between this PR and base is: 0.6 ± 0.2 ms. Import time breakdownThe following import paths have shrunk:
|
Performance SLOsComparing candidate backport-15398-to-4.0 (abc8b67) with baseline 4.0 (38e0793) 📈 Performance Regressions (1 suite)📈 iastaspects - 118/118✅ add_aspectTime: ✅ 0.449µs (SLO: <10.000µs 📉 -95.5%) vs baseline: -0.4% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +4.7% ✅ add_inplace_aspectTime: ✅ 0.447µs (SLO: <10.000µs 📉 -95.5%) vs baseline: -0.2% Memory: ✅ 39.499MB (SLO: <41.500MB -4.8%) vs baseline: +4.9% ✅ add_inplace_noaspectTime: ✅ 0.285µs (SLO: <10.000µs 📉 -97.1%) vs baseline: -0.6% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +5.0% ✅ add_noaspectTime: ✅ 0.359µs (SLO: <10.000µs 📉 -96.4%) vs baseline: +2.1% Memory: ✅ 39.499MB (SLO: <41.500MB -4.8%) vs baseline: +5.1% ✅ bytearray_aspectTime: ✅ 1.364µs (SLO: <10.000µs 📉 -86.4%) vs baseline: +2.7% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.5% ✅ bytearray_extend_aspectTime: ✅ 1.525µs (SLO: <10.000µs 📉 -84.7%) vs baseline: +1.1% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.8% ✅ bytearray_extend_noaspectTime: ✅ 0.616µs (SLO: <10.000µs 📉 -93.8%) vs baseline: ~same Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +5.1% ✅ bytearray_noaspectTime: ✅ 0.489µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.3% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ bytes_aspectTime: ✅ 1.481µs (SLO: <10.000µs 📉 -85.2%) vs baseline: 📈 +15.1% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.9% ✅ bytes_noaspectTime: ✅ 0.498µs (SLO: <10.000µs 📉 -95.0%) vs baseline: +0.8% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.9% ✅ bytesio_aspectTime: ✅ 1.311µs (SLO: <10.000µs 📉 -86.9%) vs baseline: -1.7% Memory: ✅ 39.518MB (SLO: <41.500MB -4.8%) vs baseline: +5.0% ✅ bytesio_noaspectTime: ✅ 0.504µs (SLO: <10.000µs 📉 -95.0%) vs baseline: -0.9% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ capitalize_aspectTime: ✅ 0.746µs (SLO: <10.000µs 📉 -92.5%) vs baseline: +0.7% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ capitalize_noaspectTime: ✅ 0.439µs (SLO: <10.000µs 📉 -95.6%) vs baseline: +0.3% Memory: ✅ 39.499MB (SLO: <41.500MB -4.8%) vs baseline: +5.0% ✅ casefold_aspectTime: ✅ 0.733µs (SLO: <10.000µs 📉 -92.7%) vs baseline: -0.9% Memory: ✅ 39.518MB (SLO: <41.500MB -4.8%) vs baseline: +5.0% ✅ casefold_noaspectTime: ✅ 0.373µs (SLO: <10.000µs 📉 -96.3%) vs baseline: +0.8% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.6% ✅ decode_aspectTime: ✅ 0.726µs (SLO: <10.000µs 📉 -92.7%) vs baseline: ~same Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ decode_noaspectTime: ✅ 0.426µs (SLO: <10.000µs 📉 -95.7%) vs baseline: +1.7% Memory: ✅ 39.518MB (SLO: <41.500MB -4.8%) vs baseline: +5.0% ✅ encode_aspectTime: ✅ 0.707µs (SLO: <10.000µs 📉 -92.9%) vs baseline: -0.5% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ encode_noaspectTime: ✅ 0.405µs (SLO: <10.000µs 📉 -96.0%) vs baseline: +0.4% Memory: ✅ 39.400MB (SLO: <41.500MB -5.1%) vs baseline: +4.8% ✅ format_aspectTime: ✅ 3.403µs (SLO: <10.000µs 📉 -66.0%) vs baseline: +0.3% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ format_map_aspectTime: ✅ 3.687µs (SLO: <10.000µs 📉 -63.1%) vs baseline: -1.1% Memory: ✅ 39.420MB (SLO: <41.500MB -5.0%) vs baseline: +4.7% ✅ format_map_noaspectTime: ✅ 0.820µs (SLO: <10.000µs 📉 -91.8%) vs baseline: +0.9% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ format_noaspectTime: ✅ 0.603µs (SLO: <10.000µs 📉 -94.0%) vs baseline: -1.6% Memory: ✅ 39.420MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ index_aspectTime: ✅ 0.358µs (SLO: <10.000µs 📉 -96.4%) vs baseline: ~same Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ index_noaspectTime: ✅ 0.314µs (SLO: <10.000µs 📉 -96.9%) vs baseline: +0.3% Memory: ✅ 39.400MB (SLO: <41.500MB -5.1%) vs baseline: +4.7% ✅ join_aspectTime: ✅ 1.399µs (SLO: <10.000µs 📉 -86.0%) vs baseline: ~same Memory: ✅ 39.373MB (SLO: <41.500MB -5.1%) vs baseline: +4.6% ✅ join_noaspectTime: ✅ 0.531µs (SLO: <10.000µs 📉 -94.7%) vs baseline: -0.2% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.5% ✅ ljust_aspectTime: ✅ 2.590µs (SLO: <20.000µs 📉 -87.1%) vs baseline: -1.9% Memory: ✅ 39.499MB (SLO: <41.500MB -4.8%) vs baseline: +5.1% ✅ ljust_noaspectTime: ✅ 0.402µs (SLO: <10.000µs 📉 -96.0%) vs baseline: -0.5% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ lower_aspectTime: ✅ 2.174µs (SLO: <10.000µs 📉 -78.3%) vs baseline: -2.1% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.8% ✅ lower_noaspectTime: ✅ 0.368µs (SLO: <10.000µs 📉 -96.3%) vs baseline: -1.1% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ lstrip_aspectTime: ✅ 2.229µs (SLO: <20.000µs 📉 -88.9%) vs baseline: +1.3% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ lstrip_noaspectTime: ✅ 0.385µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.7% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ modulo_aspectTime: ✅ 1.036µs (SLO: <10.000µs 📉 -89.6%) vs baseline: -0.7% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.9% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 1.577µs (SLO: <10.000µs 📉 -84.2%) vs baseline: -1.0% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ modulo_aspect_for_bytesTime: ✅ 1.020µs (SLO: <10.000µs 📉 -89.8%) vs baseline: -0.9% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.6% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 1.249µs (SLO: <10.000µs 📉 -87.5%) vs baseline: -1.0% Memory: ✅ 39.518MB (SLO: <41.500MB -4.8%) vs baseline: +5.0% ✅ modulo_noaspectTime: ✅ 0.672µs (SLO: <10.000µs 📉 -93.3%) vs baseline: -1.4% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +5.0% ✅ replace_aspectTime: ✅ 4.978µs (SLO: <10.000µs 📉 -50.2%) vs baseline: +1.0% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +4.8% ✅ replace_noaspectTime: ✅ 0.462µs (SLO: <10.000µs 📉 -95.4%) vs baseline: -0.7% Memory: ✅ 39.381MB (SLO: <41.500MB -5.1%) vs baseline: +4.5% ✅ repr_aspectTime: ✅ 0.942µs (SLO: <10.000µs 📉 -90.6%) vs baseline: -0.2% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.8% ✅ repr_noaspectTime: ✅ 0.455µs (SLO: <10.000µs 📉 -95.5%) vs baseline: +0.5% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.5% ✅ rstrip_aspectTime: ✅ 1.875µs (SLO: <20.000µs 📉 -90.6%) vs baseline: ~same Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +4.8% ✅ rstrip_noaspectTime: ✅ 0.383µs (SLO: <10.000µs 📉 -96.2%) vs baseline: +0.8% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ slice_aspectTime: ✅ 0.496µs (SLO: <10.000µs 📉 -95.0%) vs baseline: -0.7% Memory: ✅ 39.400MB (SLO: <41.500MB -5.1%) vs baseline: +4.6% ✅ slice_noaspectTime: ✅ 0.449µs (SLO: <10.000µs 📉 -95.5%) vs baseline: -0.6% Memory: ✅ 39.420MB (SLO: <41.500MB -5.0%) vs baseline: +4.6% ✅ stringio_aspectTime: ✅ 1.758µs (SLO: <10.000µs 📉 -82.4%) vs baseline: +1.7% Memory: ✅ 39.518MB (SLO: <41.500MB -4.8%) vs baseline: +4.8% ✅ stringio_noaspectTime: ✅ 0.919µs (SLO: <10.000µs 📉 -90.8%) vs baseline: +0.9% Memory: ✅ 39.558MB (SLO: <41.500MB -4.7%) vs baseline: +5.2% ✅ strip_aspectTime: ✅ 2.209µs (SLO: <20.000µs 📉 -89.0%) vs baseline: +0.9% Memory: ✅ 39.558MB (SLO: <41.500MB -4.7%) vs baseline: +5.1% ✅ strip_noaspectTime: ✅ 0.395µs (SLO: <10.000µs 📉 -96.1%) vs baseline: +3.1% Memory: ✅ 39.499MB (SLO: <41.500MB -4.8%) vs baseline: +4.9% ✅ swapcase_aspectTime: ✅ 2.390µs (SLO: <10.000µs 📉 -76.1%) vs baseline: +0.3% Memory: ✅ 39.440MB (SLO: <41.500MB -5.0%) vs baseline: +4.7% ✅ swapcase_noaspectTime: ✅ 0.539µs (SLO: <10.000µs 📉 -94.6%) vs baseline: +0.5% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ title_aspectTime: ✅ 2.330µs (SLO: <10.000µs 📉 -76.7%) vs baseline: -0.2% Memory: ✅ 39.499MB (SLO: <41.500MB -4.8%) vs baseline: +4.9% ✅ title_noaspectTime: ✅ 0.499µs (SLO: <10.000µs 📉 -95.0%) vs baseline: ~same Memory: ✅ 39.420MB (SLO: <41.500MB -5.0%) vs baseline: +4.8% ✅ translate_aspectTime: ✅ 3.210µs (SLO: <10.000µs 📉 -67.9%) vs baseline: +0.6% Memory: ✅ 39.518MB (SLO: <41.500MB -4.8%) vs baseline: +5.1% ✅ translate_noaspectTime: ✅ 1.050µs (SLO: <10.000µs 📉 -89.5%) vs baseline: +0.5% Memory: ✅ 39.479MB (SLO: <41.500MB -4.9%) vs baseline: +4.9% ✅ upper_aspectTime: ✅ 2.202µs (SLO: <10.000µs 📉 -78.0%) vs baseline: -0.1% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.8% ✅ upper_noaspectTime: ✅ 0.370µs (SLO: <10.000µs 📉 -96.3%) vs baseline: -0.4% Memory: ✅ 39.459MB (SLO: <41.500MB -4.9%) vs baseline: +4.7% 🟡 Near SLO Breach (4 suites)🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.581ms (SLO: <4.750ms -3.6%) vs baseline: -0.3% Memory: ✅ 63.797MB (SLO: <66.500MB -4.1%) vs baseline: +5.0% ✅ appsec-postTime: ✅ 6.627ms (SLO: <6.750ms 🟡 -1.8%) vs baseline: +0.3% Memory: ✅ 63.989MB (SLO: <66.500MB -3.8%) vs baseline: +5.0% ✅ appsec-telemetryTime: ✅ 4.589ms (SLO: <4.750ms -3.4%) vs baseline: +0.3% Memory: ✅ 63.753MB (SLO: <66.500MB -4.1%) vs baseline: +4.9% ✅ debuggerTime: ✅ 1.855ms (SLO: <2.000ms -7.2%) vs baseline: ~same Memory: ✅ 47.650MB (SLO: <49.500MB -3.7%) vs baseline: +4.9% ✅ iast-getTime: ✅ 1.854ms (SLO: <2.000ms -7.3%) vs baseline: -0.2% Memory: ✅ 44.434MB (SLO: <49.000MB -9.3%) vs baseline: +4.4% ✅ profilerTime: ✅ 1.915ms (SLO: <2.100ms -8.8%) vs baseline: ~same Memory: ✅ 48.445MB (SLO: <50.000MB -3.1%) vs baseline: +4.9% ✅ resource-renamingTime: ✅ 3.376ms (SLO: <3.650ms -7.5%) vs baseline: +0.2% Memory: ✅ 54.067MB (SLO: <56.000MB -3.5%) vs baseline: +4.8% ✅ tracerTime: ✅ 3.360ms (SLO: <3.650ms -7.9%) vs baseline: ~same Memory: ✅ 54.089MB (SLO: <56.500MB -4.3%) vs baseline: +4.8% ✅ tracer-nativeTime: ✅ 3.351ms (SLO: <3.650ms -8.2%) vs baseline: -0.5% Memory: ✅ 54.100MB (SLO: <60.000MB -9.8%) vs baseline: +5.0% 🟡 otelspan - 22/22✅ add-eventTime: ✅ 38.512ms (SLO: <47.150ms 📉 -18.3%) vs baseline: -0.2% Memory: ✅ 39.046MB (SLO: <47.000MB 📉 -16.9%) vs baseline: +4.9% ✅ add-metricsTime: ✅ 256.591ms (SLO: <344.800ms 📉 -25.6%) vs baseline: -0.6% Memory: ✅ 43.313MB (SLO: <47.500MB -8.8%) vs baseline: +4.7% ✅ add-tagsTime: ✅ 314.645ms (SLO: <321.000ms 🟡 -2.0%) vs baseline: +0.3% Memory: ✅ 43.391MB (SLO: <47.500MB -8.6%) vs baseline: +4.9% ✅ get-contextTime: ✅ 78.504ms (SLO: <92.350ms 📉 -15.0%) vs baseline: +0.2% Memory: ✅ 39.231MB (SLO: <46.500MB 📉 -15.6%) vs baseline: +4.7% ✅ is-recordingTime: ✅ 35.899ms (SLO: <44.500ms 📉 -19.3%) vs baseline: +0.2% Memory: ✅ 38.862MB (SLO: <47.500MB 📉 -18.2%) vs baseline: +5.0% ✅ record-exceptionTime: ✅ 56.571ms (SLO: <67.650ms 📉 -16.4%) vs baseline: +0.3% Memory: ✅ 39.404MB (SLO: <47.000MB 📉 -16.2%) vs baseline: +4.7% ✅ set-statusTime: ✅ 42.430ms (SLO: <50.400ms 📉 -15.8%) vs baseline: +0.2% Memory: ✅ 38.935MB (SLO: <47.000MB 📉 -17.2%) vs baseline: +5.3% ✅ startTime: ✅ 35.336ms (SLO: <43.450ms 📉 -18.7%) vs baseline: +0.6% Memory: ✅ 38.843MB (SLO: <47.000MB 📉 -17.4%) vs baseline: +4.7% ✅ start-finishTime: ✅ 81.777ms (SLO: <88.000ms -7.1%) vs baseline: ~same Memory: ✅ 36.707MB (SLO: <46.500MB 📉 -21.1%) vs baseline: +5.0% ✅ start-finish-telemetryTime: ✅ 83.066ms (SLO: <89.000ms -6.7%) vs baseline: -0.3% Memory: ✅ 36.667MB (SLO: <46.500MB 📉 -21.1%) vs baseline: +5.0% ✅ update-nameTime: ✅ 36.953ms (SLO: <45.150ms 📉 -18.2%) vs baseline: +0.7% Memory: ✅ 38.945MB (SLO: <47.000MB 📉 -17.1%) vs baseline: +4.8% 🟡 packagespackageforrootmodulemapping - 4/4✅ cache_offTime: ✅ 342.187ms (SLO: <354.300ms -3.4%) vs baseline: -0.5% Memory: ✅ 40.673MB (SLO: <41.500MB 🟡 -2.0%) vs baseline: +5.0% ✅ cache_onTime: ✅ 0.383µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.6% Memory: ✅ 39.100MB (SLO: <41.000MB -4.6%) vs baseline: +3.2% 🟡 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 2.908µs (SLO: <20.000µs 📉 -85.5%) vs baseline: -1.8% Memory: ✅ 34.505MB (SLO: <35.500MB -2.8%) vs baseline: +4.7% ✅ 1-count-metrics-100-timesTime: ✅ 201.734µs (SLO: <220.000µs -8.3%) vs baseline: ~same Memory: ✅ 34.564MB (SLO: <35.500MB -2.6%) vs baseline: +4.9% ✅ 1-distribution-metric-1-timesTime: ✅ 3.355µs (SLO: <20.000µs 📉 -83.2%) vs baseline: +1.1% Memory: ✅ 34.544MB (SLO: <35.500MB -2.7%) vs baseline: +4.9% ✅ 1-distribution-metrics-100-timesTime: ✅ 217.627µs (SLO: <230.000µs -5.4%) vs baseline: -2.3% Memory: ✅ 34.603MB (SLO: <35.500MB -2.5%) vs baseline: +4.9% ✅ 1-gauge-metric-1-timesTime: ✅ 2.160µs (SLO: <20.000µs 📉 -89.2%) vs baseline: -1.2% Memory: ✅ 34.524MB (SLO: <35.500MB -2.7%) vs baseline: +4.7% ✅ 1-gauge-metrics-100-timesTime: ✅ 136.963µs (SLO: <150.000µs -8.7%) vs baseline: +0.4% Memory: ✅ 34.465MB (SLO: <35.500MB -2.9%) vs baseline: +4.6% ✅ 1-rate-metric-1-timesTime: ✅ 3.123µs (SLO: <20.000µs 📉 -84.4%) vs baseline: -0.6% Memory: ✅ 34.485MB (SLO: <35.500MB -2.9%) vs baseline: +4.7% ✅ 1-rate-metrics-100-timesTime: ✅ 215.549µs (SLO: <250.000µs 📉 -13.8%) vs baseline: -0.7% Memory: ✅ 34.603MB (SLO: <35.500MB -2.5%) vs baseline: +5.0% ✅ 100-count-metrics-100-timesTime: ✅ 20.148ms (SLO: <22.000ms -8.4%) vs baseline: +0.9% Memory: ✅ 34.524MB (SLO: <35.500MB -2.7%) vs baseline: +4.7% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.283ms (SLO: <2.300ms 🟡 -0.8%) vs baseline: -0.7% Memory: ✅ 34.544MB (SLO: <35.500MB -2.7%) vs baseline: +4.8% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.425ms (SLO: <1.550ms -8.1%) vs baseline: +1.7% Memory: ✅ 34.564MB (SLO: <35.500MB -2.6%) vs baseline: +5.0% ✅ 100-rate-metrics-100-timesTime: ✅ 2.187ms (SLO: <2.550ms 📉 -14.2%) vs baseline: -0.2% Memory: ✅ 34.524MB (SLO: <35.500MB -2.7%) vs baseline: +4.9% ✅ flush-1-metricTime: ✅ 4.668µs (SLO: <20.000µs 📉 -76.7%) vs baseline: +2.9% Memory: ✅ 34.505MB (SLO: <35.500MB -2.8%) vs baseline: +4.9% ✅ flush-100-metricsTime: ✅ 173.742µs (SLO: <250.000µs 📉 -30.5%) vs baseline: -0.6% Memory: ✅ 34.564MB (SLO: <35.500MB -2.6%) vs baseline: +4.8% ✅ flush-1000-metricsTime: ✅ 2.112ms (SLO: <2.500ms 📉 -15.5%) vs baseline: -0.6% Memory: ✅ 35.291MB (SLO: <36.500MB -3.3%) vs baseline: +4.7%
|
Description
Backport of #15398
with 10 retries and configurable delays
DD_DOWNLOAD_MAX_DELAY environment variables