Skip to content

Commit

Permalink
Merge pull request #1451 from 0chain/hotfix/queue-index
Browse files Browse the repository at this point in the history
fix download and mask index
  • Loading branch information
dabasov authored Apr 4, 2024
2 parents ff96e64 + 4ecae00 commit f0cba37
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions zboxcore/sdk/downloadworker.go
Original file line number Diff line number Diff line change
Expand Up @@ -303,16 +303,21 @@ func (req *DownloadRequest) downloadBlock(
var err error
defer func() {
if err != nil {
atomic.AddInt32(&failed, 1)
req.removeFromMask(uint64(result.maskIdx))
totalFail := atomic.AddInt32(&failed, 1)
// if first request remove from end as we will convert the slice into heap
if timeRequest {
req.removeFromMask(uint64(activeBlobbers - int(totalFail)))
} else {
req.removeFromMask(uint64(result.maskIdx))
}
downloadErrors[i] = fmt.Sprintf("Error %s from %s",
err.Error(), req.blobbers[result.idx].Baseurl)
logger.Logger.Error(err)
if req.bufferMap != nil {
if req.bufferMap != nil && req.bufferMap[result.idx] != nil {
req.bufferMap[result.idx].ReleaseChunk(int(req.startBlock))
}
} else if timeRequest {
req.downloadQueue[result.idx].timeTaken = result.timeTaken
req.downloadQueue[result.maskIdx].timeTaken = result.timeTaken
}
wg.Done()
}()
Expand Down Expand Up @@ -548,14 +553,17 @@ func (req *DownloadRequest) processDownload() {
}
for i := req.downloadMask; !i.Equals64(0); i = i.And(zboxutil.NewUint128(1).Lsh(pos).Not()) {
pos = uint64(i.TrailingZeros())
blobberIdx := req.downloadQueue[pos].blobberIdx
blobberIdx := int(pos)
if writerAt {
req.bufferMap[blobberIdx] = zboxutil.NewDownloadBufferWithChan(sz, int(numBlocks), req.effectiveBlockSize)
} else {
req.bufferMap[blobberIdx] = zboxutil.NewDownloadBufferWithMask(sz, int(numBlocks), req.effectiveBlockSize)
}
}
}
// reset mask to number of active blobbers, not it denotes index of download queue and not blobber index
activeBlobbers := req.downloadMask.CountOnes()
req.downloadMask = zboxutil.NewUint128(1).Lsh(uint64(activeBlobbers)).Sub64(1)

logger.Logger.Info(
fmt.Sprintf("Downloading file with size: %d from start block: %d and end block: %d. "+
Expand Down

0 comments on commit f0cba37

Please sign in to comment.