fix: auto switch to concurrent back source (#1507)
Signed-off-by: Jim Ma <majinjing3@gmail.com>
This commit is contained in:
parent
9e1329296e
commit
ddfdb24dbf
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue