Skip to content

fix(codeartifact): verify GOAWAY recovery and retain diagnostics - #35

Merged
ravi-pplx merged 2 commits into
pplx/mainfrom
fix/codeartifact-stream-recovery-pplx
Nov 7, 2026
Merged

ravi-pplx merged 2 commits into
pplx/mainfrom
fix/codeartifact-stream-recovery-pplx

Conversation

@ravi-pplx

@ravi-pplx ravi-pplx commented Oct 29, 2026 •

Copy link
Copy Markdown

Motivation

Incomplete CodeArtifact responses must abort downstream transfers so package clients do not accept truncated metadata as a successful response. The abort behavior is already present; this follow-up makes upstream HTTP/2 GOAWAY failures diagnosable and protects real-client recovery against regressions.

Changes

  • Classify recognized GOAWAY body errors as http2_goaway in stream-failure and origin metrics. Add the allowlisted HTTP/2 error code and bounded last-stream ID to stream-failure logs; these logs omit peer debug text, and those two fields are not metric dimensions.
  • Preserve cancellation precedence and generic transport classification for unknown or malformed metadata.
  • Add a real TLS HTTP/2 origin that sends GOAWAY only after partial data reaches the downstream client. Exercise certificate-verified HTTP/1.1 and HTTP/2 connections with checksum-pinned uv 0.13.4.
  • Cover uv recovery from a truncated PyPI index, retry exhaustion, rejection of partial index cache fills, and subsequent PEP 658 metadata resolution. A fresh client verifies warm-cache reuse of complete index and metadata responses. CI installs the pinned client; ordinary unit tests do not require it.

Behavior and scope

This does not change retry budgets, transport settings, response-abort behavior, or byte-range accounting. The uv tests cover resolution, not wheel installation or range-resume recovery. Consumer adoption and deployment remain separate.

Created with Perplexity

@ravi-pplx ravi-pplx changed the title codeartifact: verify GOAWAY recovery and retain HTTP/2 diagnostics fix(codeartifact): verify GOAWAY recovery and retain diagnostics Oct 29, 2026
@ravi-pplx
ravi-pplx force-pushed the fix/codeartifact-stream-recovery-pplx branch from 64bb6c8 to 747ffad Compare November 7, 2026 07:00
@ravi-pplx
ravi-pplx marked this pull request as ready for review November 7, 2026 18:37
@ravi-pplx
ravi-pplx force-pushed the fix/codeartifact-stream-recovery-pplx branch from 3f99e9a to 694dd75 Compare November 7, 2026 18:40
@ravi-pplx
ravi-pplx merged commit bc4cd10 into pplx/main Nov 7, 2026
4 checks passed
ravi-pplx added a commit that referenced this pull request Nov 9, 2026
## Motivation

Incomplete CodeArtifact responses must abort downstream transfers so package clients do not accept truncated metadata as a successful response. The abort behavior is already present; this follow-up makes upstream HTTP/2 GOAWAY failures diagnosable and protects real-client recovery against regressions.

## Changes

- Classify recognized GOAWAY body errors as `http2_goaway` in stream-failure and origin metrics. Add the allowlisted HTTP/2 error code and bounded last-stream ID to stream-failure logs; these logs omit peer debug text, and those two fields are not metric dimensions.
- Preserve cancellation precedence and generic transport classification for unknown or malformed metadata.
- Add a real TLS HTTP/2 origin that sends GOAWAY only after partial data reaches the downstream client. Exercise certificate-verified HTTP/1.1 and HTTP/2 connections with checksum-pinned `uv` 0.13.4.
- Cover uv recovery from a truncated PyPI index, retry exhaustion, rejection of partial index cache fills, and subsequent PEP 658 metadata resolution. A fresh client verifies warm-cache reuse of complete index and metadata responses. CI installs the pinned client; ordinary unit tests do not require it.

## Behavior and scope

This does not change retry budgets, transport settings, response-abort behavior, or byte-range accounting. The uv tests cover resolution, not wheel installation or range-resume recovery. Consumer adoption and deployment remain separate.

Created with [Perplexity](https://www.perplexity.ai/computer/tasks/5f970909-348b-4848-b2d7-6c1a3912784a)
ravi-pplx added a commit that referenced this pull request Nov 12, 2026
## Motivation

Incomplete CodeArtifact responses must abort downstream transfers so package clients do not accept truncated metadata as a successful response. The abort behavior is already present; this follow-up makes upstream HTTP/2 GOAWAY failures diagnosable and protects real-client recovery against regressions.

## Changes

- Classify recognized GOAWAY body errors as `http2_goaway` in stream-failure and origin metrics. Add the allowlisted HTTP/2 error code and bounded last-stream ID to stream-failure logs; these logs omit peer debug text, and those two fields are not metric dimensions.
- Preserve cancellation precedence and generic transport classification for unknown or malformed metadata.
- Add a real TLS HTTP/2 origin that sends GOAWAY only after partial data reaches the downstream client. Exercise certificate-verified HTTP/1.1 and HTTP/2 connections with checksum-pinned `uv` 0.13.4.
- Cover uv recovery from a truncated PyPI index, retry exhaustion, rejection of partial index cache fills, and subsequent PEP 658 metadata resolution. A fresh client verifies warm-cache reuse of complete index and metadata responses. CI installs the pinned client; ordinary unit tests do not require it.

## Behavior and scope

This does not change retry budgets, transport settings, response-abort behavior, or byte-range accounting. The uv tests cover resolution, not wheel installation or range-resume recovery. Consumer adoption and deployment remain separate.

Created with [Perplexity](https://www.perplexity.ai/computer/tasks/5f970909-348b-4848-b2d7-6c1a3912784a)
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.

1 participant