mirror of
https://github.com/distribution/distribution.git
synced 2025-08-19 23:38:13 +00:00
s3: Parse S3 errors returned during multipart operations
The S3 implementation of `Writer` creates a multipart upload and then uploads to it as data is written. Previously errors were returned verbatim, but in order to handle things like quotas we should parse the S3 errors so we can return more meaningful errors to callers of `Write`. Signed-off-by: Adam Wolfe Gordon <awg@digitalocean.com>
This commit is contained in:
parent
122552b40b
commit
f2331f9d03
@ -1300,7 +1300,7 @@ func (w *writer) Write(p []byte) (int, error) {
|
||||
Key: aws.String(w.key),
|
||||
UploadId: aws.String(w.uploadID),
|
||||
})
|
||||
return 0, err
|
||||
return 0, parseError(w.key, err)
|
||||
}
|
||||
|
||||
resp, err := w.driver.S3.CreateMultipartUpload(&s3.CreateMultipartUploadInput{
|
||||
@ -1312,7 +1312,7 @@ func (w *writer) Write(p []byte) (int, error) {
|
||||
StorageClass: w.driver.getStorageClass(),
|
||||
})
|
||||
if err != nil {
|
||||
return 0, err
|
||||
return 0, parseError(w.key, err)
|
||||
}
|
||||
w.uploadID = *resp.UploadId
|
||||
|
||||
@ -1324,7 +1324,7 @@ func (w *writer) Write(p []byte) (int, error) {
|
||||
Key: aws.String(w.key),
|
||||
})
|
||||
if err != nil {
|
||||
return 0, err
|
||||
return 0, parseError(w.key, err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
w.parts = nil
|
||||
@ -1342,7 +1342,7 @@ func (w *writer) Write(p []byte) (int, error) {
|
||||
UploadId: resp.UploadId,
|
||||
})
|
||||
if err != nil {
|
||||
return 0, err
|
||||
return 0, parseError(w.key, err)
|
||||
}
|
||||
w.parts = []*s3.Part{
|
||||
{
|
||||
@ -1415,7 +1415,7 @@ func (w *writer) Cancel() error {
|
||||
Key: aws.String(w.key),
|
||||
UploadId: aws.String(w.uploadID),
|
||||
})
|
||||
return err
|
||||
return parseError(w.key, err)
|
||||
}
|
||||
|
||||
func (w *writer) Commit() error {
|
||||
@ -1456,7 +1456,7 @@ func (w *writer) Commit() error {
|
||||
Key: aws.String(w.key),
|
||||
UploadId: aws.String(w.uploadID),
|
||||
})
|
||||
return err
|
||||
return parseError(w.key, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@ -1484,7 +1484,7 @@ func (w *writer) flushPart() error {
|
||||
Body: bytes.NewReader(w.readyPart),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
return parseError(w.key, err)
|
||||
}
|
||||
w.parts = append(w.parts, &s3.Part{
|
||||
ETag: resp.ETag,
|
||||
|
Loading…
Reference in New Issue
Block a user