Merge pull request #16232 from wanyaoqi/automated-cherry-pick-of-#16231-upstream-release-3.10

Automated cherry pick of #16231: fix(host): download sparse file truncate first
This commit is contained in:
Zexi Li
2023-03-15 10:11:58 +08:00
committed by GitHub
3 changed files with 15 additions and 0 deletions

View File

@@ -410,6 +410,13 @@ func init() {
if sparseHeader > 0 {
writer = sparsefile.NewSparseFileWriter(fi, sparseHeader, totalSize)
fileSize, _ := strconv.ParseInt(resp.Header.Get("X-File-Size"), 10, 64)
if fileSize > 0 {
err = fi.Truncate(fileSize)
if err != nil {
return errors.Wrapf(err, "failed truncate file")
}
}
}
bar := pb.Full.Start64(totalSize)

View File

@@ -87,6 +87,7 @@ func (d *SDownloadProvider) Start(
reader = fi
size := stat.Size()
d.w.Header().Set("X-File-Size", fmt.Sprintf("%d", size))
if d.sparse {
sparse, err := sparsefile.NewSparseFileReader(fi)
if err != nil {

View File

@@ -244,6 +244,13 @@ func (r *SRemoteFile) downloadInternal(getData bool, preChksum string, callback
if sparseHeader > 0 {
writer = sparsefile.NewSparseFileWriter(fi, sparseHeader, totalSize)
fileSize, _ := strconv.ParseInt(resp.Header.Get("X-File-Size"), 10, 64)
if fileSize > 0 {
err = fi.Truncate(fileSize)
if err != nil {
return errors.Wrapf(err, "failed truncate file")
}
}
}
pb := pb.NewProxyReader(reader, totalSize)