Pusher uses retries for the exists check
|
resp, err := req.doWithRetries(ctx, nil) |
and
POST request
|
resp, err = req.doWithRetries(ctx, nil) |
so they can handle
401 and request a token. Rest of the requests do not do this. GCR does not require authentication for the exists check and if the blobs for the push already exist
POST request is skipped and only
PUT request for manifest is done
that doesn't authenticate properly.
One fix that seems to resolve this is to just do doWithRetries in
but not sure if this is desired for blob requests. Mount request also doesn't do retries
|
resp, err = preq.do(pctx) |
.
Affected versions: all
Pusher uses retries for the exists check
containerd/remotes/docker/pusher.go
Line 88 in 98a7355
POSTrequestcontainerd/remotes/docker/pusher.go
Line 155 in 98a7355
401and request a token. Rest of the requests do not do this. GCR does not require authentication for the exists check and if the blobs for the push already existPOSTrequest is skipped and onlyPUTrequest for manifest is donecontainerd/remotes/docker/pusher.go
Line 241 in 98a7355
One fix that seems to resolve this is to just do
doWithRetriesincontainerd/remotes/docker/pusher.go
Line 241 in 98a7355
containerd/remotes/docker/pusher.go
Line 141 in 98a7355
Affected versions: all