Răsfoiți Sursa

eth/downloader: demote peers if they exceed the soft limits at 1 blocks already

Péter Szilágyi 10 ani în urmă
părinte
comite
3ec159ab6b
1 a modificat fișierele cu 8 adăugiri și 3 ștergeri
  1. 8 3
      eth/downloader/peer.go

+ 8 - 3
eth/downloader/peer.go

@@ -93,11 +93,16 @@ func (p *peer) SetIdle() {
 		// Calculate the new download bandwidth allowance
 		prev := atomic.LoadInt32(&p.capacity)
 		next := int32(math.Max(1, math.Min(MaxBlockFetch, float64(prev)*scale)))
-		if scale < 1 {
-			glog.V(logger.Detail).Infof("%s: reducing block allowance from %d to %d", p.id, prev, next)
-		}
+
 		// Try to update the old value
 		if atomic.CompareAndSwapInt32(&p.capacity, prev, next) {
+			// If we're having problems at 1 capacity, try to find better peers
+			if next == 1 {
+				p.Demote()
+			}
+			if prev != next {
+				glog.V(logger.Detail).Infof("%s: changing block download capacity from %d to %d", p.id, prev, next)
+			}
 			break
 		}
 	}