mirror of
https://github.com/restic/restic.git
synced 2025-08-11 07:47:46 +00:00
archiver: Check that saved file does not have null IDs in content
Null IDs in the file content indicate that something went wrong. Thus fails before saving the affected file.
This commit is contained in:
@@ -1969,7 +1969,7 @@ type failSaveRepo struct {
|
||||
func (f *failSaveRepo) SaveBlob(ctx context.Context, t restic.BlobType, buf []byte, id restic.ID, storeDuplicate bool) (restic.ID, bool, int, error) {
|
||||
val := atomic.AddInt32(&f.cnt, 1)
|
||||
if val >= f.failAfter {
|
||||
return restic.ID{}, false, 0, f.err
|
||||
return restic.Hash(buf), false, 0, f.err
|
||||
}
|
||||
|
||||
return f.Repository.SaveBlob(ctx, t, buf, id, storeDuplicate)
|
||||
|
@@ -128,6 +128,11 @@ func (s *FileSaver) saveFile(ctx context.Context, chnker *chunker.Chunker, snPat
|
||||
if isCompleted {
|
||||
panic("completed twice")
|
||||
}
|
||||
for _, id := range fnr.node.Content {
|
||||
if id.IsNull() {
|
||||
panic("completed file with null ID")
|
||||
}
|
||||
}
|
||||
isCompleted = true
|
||||
finish(fnr)
|
||||
}
|
||||
|
@@ -35,7 +35,12 @@ func startFileSaver(ctx context.Context, t testing.TB) (*FileSaver, context.Cont
|
||||
wg, ctx := errgroup.WithContext(ctx)
|
||||
|
||||
saveBlob := func(ctx context.Context, tpe restic.BlobType, buf *Buffer, cb func(SaveBlobResponse)) {
|
||||
cb(SaveBlobResponse{})
|
||||
cb(SaveBlobResponse{
|
||||
id: restic.Hash(buf.Data),
|
||||
length: len(buf.Data),
|
||||
sizeInRepo: len(buf.Data),
|
||||
known: false,
|
||||
})
|
||||
}
|
||||
|
||||
workers := uint(runtime.NumCPU())
|
||||
|
Reference in New Issue
Block a user