You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Addresses three findings:
1. OCI operations could block indefinitely. The oras HTTP client had no
ResponseHeaderTimeout, and the non-Context wrappers used a deadline-less
context.Background(), so a registry that accepts the connection but stops
responding hung features/templates/outdated/publish until a signal. Set
ResponseHeaderTimeout on the shared transport (bounds a connected-but-silent
registry without capping large blob transfers) and give each non-Context
wrapper a default per-operation deadline (60s metadata, 10m blob). Publish
now threads the command context via GetPublishedTagsContext.
2. publish ignored failures when listing existing tags. GetPublishedTags's
error was discarded, so an auth/network/5xx failure looked like a first
publish and mobile aliases (latest, 1, 1.2) were recomputed off an empty
list — risking clobbering. Only a 404 (repo not created yet) is now treated
as empty; any other error aborts the item. Added oci.IsNotFound to classify.
3. Critical OCI tests ran in no normal CI lane. The unanchored
-skip 'TestClient|...' also excluded TestClientAuthCacheReused and
TestClientOperationsHonorCanceledContext, and test:integration only runs
./internal/httpx -run TestClient — so both fell out of unit/race/coverage
AND integration. Anchored the pattern to
'^TestClient$|^TestE2E|^TestParityMatrix$|^TestPublishParity$' so the httpx
integration test stays skipped in the unit lane while the OCI tests run.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments