Skip to content

Commit

Permalink
Merge pull request #51 from Chia-Network/amazon-multipart-memory
Browse files Browse the repository at this point in the history
Read file part buffer after semaphore in amazon multipart upload
  • Loading branch information
Starttoaster authored Sep 22, 2024
2 parents d4d4279 + eaa3d67 commit 221c613
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions pkg/amazon/s3.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,20 +117,21 @@ func MultiPartUpload(input MultiPartUploadInput) error {
offset := i * input.PartSize
bytesToRead := min(input.PartSize, fileSize-offset)

partBuffer := make([]byte, bytesToRead)
_, err := file.ReadAt(partBuffer, offset)
if err != nil {
return err
}

wg.Add(1)
go func(partNumber int64, partBuffer []byte) {
go func(partNumber int64, bytesToRead int64, offset int64) {
sem <- struct{}{}
defer func() {
<-sem
}()
defer wg.Done()

partBuffer := make([]byte, bytesToRead)
_, err := file.ReadAt(partBuffer, offset)
if err != nil {
ch <- err
return
}

if input.Logger != nil {
input.Logger.Debug("uploading file part", "file", input.Filepath, "part", partNumber, "size", len(partBuffer))
}
Expand All @@ -156,7 +157,7 @@ func MultiPartUpload(input MultiPartUploadInput) error {
if input.Logger != nil {
input.Logger.Debug("finished uploading file part", "file", input.Filepath, "part", partNumber, "size", len(partBuffer))
}
}(partNumber, partBuffer)
}(partNumber, bytesToRead, offset)
}

wg.Wait()
Expand Down

0 comments on commit 221c613

Please sign in to comment.