From d15ec4e81ec3acd4cbe18ead2f025341f5550831 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Thu, 1 Feb 2024 19:02:24 -0500 Subject: [PATCH] fix: need the reader to be created and closed inside the task --- renter/renter.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/renter/renter.go b/renter/renter.go index 5a733bf..0fc1c2f 100644 --- a/renter/renter.go +++ b/renter/renter.go @@ -167,14 +167,25 @@ func (r *RenterDefault) MultipartUpload(params MultiPartUploadParams) error { if end > size { end = size } - - reader, err := rf(uint(start), uint(end)) next := make(chan struct{}, 0) defer close(next) + job := r.cron.RetryableTask(cron.RetryableTaskParams{ Name: fileName + "-part-" + strconv.FormatUint(i, 10), Function: func() error { - _, err := r.workerClient.UploadMultipartUploadPart(context.Background(), reader, bucket, fileName, upload.UploadID, int(i), api.UploadMultipartUploadPartOptions{}) + reader, err := rf(uint(start), uint(end)) + defer func(reader io.ReadCloser) { + err := reader.Close() + if err != nil { + r.logger.Error("failed to close reader", zap.Error(err)) + } + }(reader) + + if err != nil { + return err + } + + _, err = r.workerClient.UploadMultipartUploadPart(context.Background(), reader, bucket, fileName, upload.UploadID, int(i), api.UploadMultipartUploadPartOptions{}) if err != nil { return err }