Skip to content

ci: retry dependency clones with HTTP/1.1 and verbose transfer log - #182

Merged
Florian Ruppel (fruppel) merged 1 commit into
mainfrom
fix/dep-clone-http11-retry
Jul 20, 2026
Merged

Florian Ruppel (fruppel) merged 1 commit into
mainfrom
fix/dep-clone-http11-retry

Conversation

@fruppel

Copy link
Copy Markdown
Contributor

Context

Follow-up to #181, which did not resolve the intermittent Failed sending HTTP request errors when cloning SwagCommercial (e.g. this run).

What we know now

  • The failures occur within ~60 ms, before any pack data is transferred → transfer volume is not the bottleneck (hence ci: use partial clone for extension dependencies  #181 alone couldn't fix it).
  • curl error 55 at that stage is a typical symptom of an HTTP/2 stream reset while the request body is being sent.
  • SwagCommercial's fetch negotiation request is ~15× larger than that of the other dependencies (3707 refs vs ~250) — consistent with it being the only repo affected.
  • None of the involved actions changed when the failures started (2026-07-18): setup-extension unchanged since 06-11, setup-shopware since 06-08 → points at a runner-image or transport-level change (runners now ship git 2.54.0).

Change

Retry attempts (2 and 3) now:

  • force http.version=HTTP/1.1
  • enable GIT_CURL_VERBOSE (git redacts auth headers in these traces)

First attempts stay on the default transport, so the logs become a live experiment:

  • retries succeed while first attempts keep failing → HTTP/2 confirmed as trigger; we can then force HTTP/1.1 for the first attempt too (or fix the runner image)
  • retries keep failing → the verbose trace shows exactly where the connection breaks (DNS, TLS, request send), which is what GitHub support / runs-on will ask for anyway

The partial-clone change (#181) did not resolve the intermittent
'Failed sending HTTP request' errors when cloning SwagCommercial: the
failures occur within ~60ms, before any pack data is transferred, so
transfer volume was not the bottleneck.

curl error 55 at that stage is a typical symptom of an HTTP/2 stream
reset while the request body is being sent. SwagCommercial's fetch
negotiation request is ~15x larger than that of other dependencies
(3707 refs vs ~250), which matches it being the only repo affected.
None of the involved actions changed when the failures started
(2026-07-18), pointing at a runner-image or transport-level change.

Retry attempts now force http.version=HTTP/1.1 and enable
GIT_CURL_VERBOSE (auth headers are redacted by git). If retries
succeed consistently while first attempts keep failing, HTTP/2 is
confirmed as the trigger and can be disabled for the first attempt
as well; if they keep failing, the verbose log shows where the
connection breaks.
@fruppel
Florian Ruppel (fruppel) merged commit d84c4de into main Jul 20, 2026
9 checks passed
@fruppel
Florian Ruppel (fruppel) deleted the fix/dep-clone-http11-retry branch July 20, 2026 11:25
@fruppel Florian Ruppel (fruppel) changed the title Retry dependency clones with HTTP/1.1 and verbose transfer log ci: retry dependency clones with HTTP/1.1 and verbose transfer log Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants