adb: wait for correct size after upload

This commit is contained in:
Fabian Möller 2019-02-15 11:59:11 +01:00
parent 2683939a4b
commit c3e1a0f368
No known key found for this signature in database
GPG Key ID: 70B29D65DD8A7E31
1 changed files with 16 additions and 1 deletions

View File

@ -481,13 +481,28 @@ func (o *Object) Update(in io.Reader, src fs.ObjectInfo, options ...fs.OpenOptio
fs.Logf(option, "Unsupported mandatory option: %v", option)
}
}
_, err := o.writeToFile(path.Join(o.fs.root, o.remote), in, 0666, src.ModTime())
written, err := o.writeToFile(path.Join(o.fs.root, o.remote), in, 0666, src.ModTime())
if err != nil {
if removeErr := o.Remove(); removeErr != nil {
fs.Errorf(o, "Failed to remove partially written file: %v", removeErr)
}
return err
}
expected := src.Size()
if expected == -1 {
expected = written
}
for _, t := range []int64{100, 250, 500, 1000, 2500, 5000, 10000} {
err = o.stat()
if err != nil {
return err
}
if o.size == expected {
return nil
}
fs.Debugf(o, "Invalid size after update, expected: %d got: %d", expected, o.size)
time.Sleep(time.Duration(t) * time.Millisecond)
}
return o.stat()
}