fix: auto switch to concurrent back source (#1507)

Signed-off-by: Jim Ma <majinjing3@gmail.com>
This commit is contained in:
Jim Ma 2022-08-01 17:07:33 +08:00 committed by Gaius
parent 9e1329296e
commit ddfdb24dbf
No known key found for this signature in database
GPG Key ID: 8B4E5D1290FA2FFB
1 changed files with 4 additions and 3 deletions

View File

@ -469,8 +469,9 @@ func (pm *pieceManager) downloadKnownLengthSource(ctx context.Context, pt Task,
pt.ReportPieceResult(request, result, nil) pt.ReportPieceResult(request, result, nil)
pt.PublishPieceInfo(pieceNum, uint32(result.Size)) pt.PublishPieceInfo(pieceNum, uint32(result.Size))
if supportConcurrent { if supportConcurrent {
speed := int64(pieceSize) / (result.FinishTime - result.BeginTime) // the time unit of FinishTime and BeginTime is ns
if speed < int64(pm.concurrentOption.ThresholdSpeed) { speed := float64(pieceSize) / float64((result.FinishTime-result.BeginTime)/1000000)
if speed < float64(pm.concurrentOption.ThresholdSpeed) {
err = pt.GetStorage().UpdateTask(ctx, err = pt.GetStorage().UpdateTask(ctx,
&storage.UpdateTaskRequest{ &storage.UpdateTaskRequest{
PeerTaskMetadata: storage.PeerTaskMetadata{ PeerTaskMetadata: storage.PeerTaskMetadata{
@ -768,7 +769,7 @@ func (pm *pieceManager) concurrentDownloadSource(ctx context.Context, pt Task, p
wg := sync.WaitGroup{} wg := sync.WaitGroup{}
wg.Add(int(pieceCount - startPieceNum)) wg.Add(int(pieceCount - startPieceNum))
downloadedPieceCount := atomic.NewInt32(0) downloadedPieceCount := atomic.NewInt32(startPieceNum)
for i := 0; i < con; i++ { for i := 0; i < con; i++ {
go func(i int) { go func(i int) {