mirror of
https://github.com/octoleo/restic.git
synced 2024-11-11 07:41:03 +00:00
gs: Don't drop error when finishing upload
The error returned when finishing the upload of an object was dropped. This could cause silent upload failures and thus data loss in certain cases. When a MD5 hash for the uploaded blob is specified, a wrong hash/damaged upload would return its error via the Close() whose error was dropped.
This commit is contained in:
parent
4d576c2f79
commit
8a486eafed
7
changelog/unreleased/pull-3249
Normal file
7
changelog/unreleased/pull-3249
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Bugfix: Better error handling for gs backend
|
||||||
|
|
||||||
|
The gs backend did not notice when the last steep of completing a file upload
|
||||||
|
failed. Under rare circumstance, this might be able to cause missing files in
|
||||||
|
the backup repository. This has been fixed.
|
||||||
|
|
||||||
|
https://github.com/restic/restic/pull/3249
|
@ -235,7 +235,10 @@ func (be *Backend) Save(ctx context.Context, h restic.Handle, rd restic.RewindRe
|
|||||||
w := be.bucket.Object(objName).NewWriter(ctx)
|
w := be.bucket.Object(objName).NewWriter(ctx)
|
||||||
w.ChunkSize = 0
|
w.ChunkSize = 0
|
||||||
wbytes, err := io.Copy(w, rd)
|
wbytes, err := io.Copy(w, rd)
|
||||||
w.Close()
|
cerr := w.Close()
|
||||||
|
if err == nil {
|
||||||
|
err = cerr
|
||||||
|
}
|
||||||
|
|
||||||
be.sem.ReleaseToken()
|
be.sem.ReleaseToken()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user