Skip to content
Permalink
Browse files

Fix S3 uploads (#178)

My previous change that reworked how metadata generation worked was not
correct for two reasons:

* It passed the original `io.Reader` (with no bytes remaining) to
  `GenerateMetadata`
* It did not seek back to the beginning of the temporary file after
  writing to it, causing any subsequent reads to return EOF.

This change fixes both issues and S3 uploads now work fine. We really
ought to investigate adding test coverage to our S3 backend to avoid
similar recurrences.
  • Loading branch information
mutantmonkey authored and andreimarcu committed Jun 4, 2019
1 parent 872340e commit 50c1bdc018653f83720830f01465cee5e2c726b3
Showing with 11 additions and 1 deletion.
  1. +11 −1 backends/s3/s3.go
@@ -122,7 +122,12 @@ func (b S3Backend) Put(key string, r io.Reader, expiry time.Time, deleteKey stri
return m, err
}

m, err = helpers.GenerateMetadata(r)
_, err = tmpDst.Seek(0, 0)
if err != nil {
return m, err
}

m, err = helpers.GenerateMetadata(tmpDst)
if err != nil {
return
}
@@ -131,6 +136,11 @@ func (b S3Backend) Put(key string, r io.Reader, expiry time.Time, deleteKey stri
// XXX: we may not be able to write this to AWS easily
//m.ArchiveFiles, _ = helpers.ListArchiveFiles(m.Mimetype, m.Size, tmpDst)

_, err = tmpDst.Seek(0, 0)
if err != nil {
return m, err
}

uploader := s3manager.NewUploaderWithClient(b.svc)
input := &s3manager.UploadInput{
Bucket: aws.String(b.bucket),

0 comments on commit 50c1bdc

Please sign in to comment.
You can’t perform that action at this time.