Skip to content

Commit 7178845

Browse files
nervtechAcconut
andauthored
filestore: Close files correctly when concatenating uploads (#1239)
* filestore: Add a method to ensure merged chunk files are properly closed * Remove unused `ctx` argument * Handle errors from `src.Close` --------- Co-authored-by: Marius Kleidl <[email protected]>
1 parent d69efe0 commit 7178845

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

pkg/filestore/filestore.go

+15-8
Original file line numberDiff line numberDiff line change
@@ -240,21 +240,28 @@ func (upload *fileUpload) ConcatUploads(ctx context.Context, uploads []handler.U
240240
}()
241241

242242
for _, partialUpload := range uploads {
243-
fileUpload := partialUpload.(*fileUpload)
244-
245-
src, err := os.Open(fileUpload.binPath)
246-
if err != nil {
247-
return err
248-
}
249-
250-
if _, err := io.Copy(file, src); err != nil {
243+
if err := partialUpload.(*fileUpload).appendTo(file); err != nil {
251244
return err
252245
}
253246
}
254247

255248
return
256249
}
257250

251+
func (upload *fileUpload) appendTo(file *os.File) error {
252+
src, err := os.Open(upload.binPath)
253+
if err != nil {
254+
return err
255+
}
256+
257+
if _, err := io.Copy(file, src); err != nil {
258+
src.Close()
259+
return err
260+
}
261+
262+
return src.Close()
263+
}
264+
258265
func (upload *fileUpload) DeclareLength(ctx context.Context, length int64) error {
259266
upload.info.Size = length
260267
upload.info.SizeIsDeferred = false

0 commit comments

Comments
 (0)